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