mybatis 解決從列名到屬性名的自動映射失敗問題
問題背景
從數(shù)據(jù)庫中取出數(shù)據(jù)映射到實體類時,實體類中只有部分屬性映射成功,其余屬性值皆為null。
問題描述
如下圖AreaDao.xml文件中描述了queryArea()方法從數(shù)據(jù)庫獲取Area對象的各個屬性值的查詢過程,最后執(zhí)行查詢結(jié)果顯示只有屬性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
數(shù)據(jù)庫中對應(yīng)的表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中的屬性使用的是駝峰命名規(guī)則,默認(rèn)情況下無法與數(shù)據(jù)庫表的列名相匹配
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設(shè)為true,關(guān)于配置文件mybatis-config.xml的各種屬性配置可以參考官方文檔
<configuration> <settings> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> </configuration>
當(dāng)然這還沒完,為了讓文件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 無法找到映射錯誤
mybatis 中報錯:
Result Maps collection does not contain value for com.common.pojo.User
其中是因為在mapper.xml文件中的resultMap ,沒有設(shè)置正確,沒有將sql的列名與pojo類的屬性名保持一致
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springMVC返回復(fù)雜的json格式數(shù)據(jù)方法
下面小編就為大家分享一篇springMVC返回復(fù)雜的json格式數(shù)據(jù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03Java HashSet集合存儲遍歷學(xué)生對象代碼實例
這篇文章主要介紹了Java HashSet集合存儲遍歷學(xué)生對象代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04Java 關(guān)于eclipse導(dǎo)入項目發(fā)生的問題及解決方法(推薦)
下面小編就為大家分享一篇Java 關(guān)于eclipse導(dǎo)入項目發(fā)生的問題及解決方法(推薦),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12SpringBoot+Jersey跨域文件上傳的實現(xiàn)示例
在SpringBoot開發(fā)后端服務(wù)時,我們一般是提供接口給前端使用,本文主要介紹了SpringBoot+Jersey跨域文件上傳的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2024-07-07Java高效提取PDF文件指定坐標(biāo)的文本內(nèi)容實戰(zhàn)代碼
在日常工作中,有時可能會需要從龐大的PDF文檔中提取其中所包含的文本內(nèi)容,下面這篇文章主要給大家介紹了關(guān)于如何利用Java高效提取PDF文件指定坐標(biāo)的文本內(nèi)容,需要的朋友可以參考下2024-01-01springMVC的RequestMapping請求不到路徑的解決
這篇文章主要介紹了springMVC的RequestMapping請求不到路徑的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08