今天在用Mybatis的時,寫測試驗證插入操作時出現錯誤org.apache.ibatis.reflection.ReflectionException: There is no getter for property named XXX。
根據字面意思就是我沒有為XXX屬性寫getter方法,課我檢查實體類卻未發現有漏寫情況出現,遂檢查配置文件。
我在我自己的mybatis-config.xml文件中發現一行代碼:
<setting name="mapUnderscoreToCamelCase" value="true"/>
上圖是Mybatis官方文檔的解釋,也就是如果在XML文件中提前規定了把數據庫中字段自動對應到Java中的駝峰命名(如果沒有上面那行代碼則只需要把實體類中的屬性名稱與數據庫一一對應,但這樣不利於命名規范)。
這時檢查自己編寫SQL語句的配置文件,果然,實體類的一個屬性createTime在配置的時候寫錯了(也就是和實體類中的名稱不同了,如下)
<insert id="addBlog" parameterType="blog"> insert into blog (id,title,author,create_time,views) values (#{id},#{title},#{author},#{createTime},#{views}); </insert>
<!--其中數據庫中的 create_time 對應於 Java 實體類中的 createTime -->