您好,登錄后才能下訂單哦!
本篇內容介紹了“mybatis如何解決從列名到屬性名的自動映射失敗的問題”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
從數據庫中取出數據映射到實體類時,實體類中只有部分屬性映射成功,其余屬性值皆為null。
如下圖AreaDao.xml文件中描述了queryArea()方法從數據庫獲取Area對象的各個屬性值的查詢過程,最后執行查詢結果顯示只有屬性priority被成功地賦值
AreaDao.xml
<select id="queryArea" resultType="com.imooc.wechatpro.model.Area"> SELECT area_id, area_name, priority, create_time, last_edit_time FROM tb_area ORDER BY priority DESC </select>
AreaDaoTest.java Area area = areaDao.queryAreaById(3);
area = {Area@7489} areaId = null areaName = null priority = {Integer@7513} 312 createTime = null lastEditTime = null
數據庫中對應的表tb_area:
mysql> select * from tb_area; +---------+-----------+----------+-------------+----------------+ | area_id | area_name | priority | create_time | last_edit_time | +---------+-----------+----------+-------------+----------------+ | 1 | 南苑 | 302 | NULL | NULL | | 2 | 北苑 | 307 | NULL | NULL | | 3 | 東苑 | 312 | NULL | NULL | +---------+-----------+----------+-------------+----------------+
實體類Area中的屬性使用的是駝峰命名規則,默認情況下無法與數據庫表的列名相匹配
Area.java public class Area { private Integer areaId; private String areaName; private Integer priority; private Date createTime; private Date lastEditTime; ······ }
在mybatis的配置文件mybatis-config.xml中將mapUnderscoreToCamelCase設為true,關于配置文件mybatis-config.xml的各種屬性配置可以參考官方文檔
<configuration> <settings> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> </configuration>
當然這還沒完,為了讓文件mybatis-config.xml生效,需要將該文件的路徑添加到全局配置文件application.properties(or application.yml)的配置中,如
application.properties mybatis.config-location=classpath:mybatis-config.xml
在這里,我的mybatis-config.xml文件在resources目錄下,因此使用路徑classpath:mybatis-config.xml
mybatis 中報錯:
Result Maps collection does not contain value for com.common.pojo.User
其中是因為在mapper.xml文件中的resultMap ,沒有設置正確,沒有將sql的列名與pojo類的屬性名保持一致
“mybatis如何解決從列名到屬性名的自動映射失敗的問題”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。