Mybatis查詢Sql結(jié)果未映射到對(duì)應(yīng)得實(shí)體類上的問(wèn)題解決
使用mybatis查詢表數(shù)據(jù)得時(shí)候,已經(jīng)確定sql語(yǔ)句沒(méi)問(wèn)題,可以正常查詢出結(jié)果,但是使用實(shí)體類接收的時(shí)候,發(fā)現(xiàn)對(duì)應(yīng)得實(shí)體類字段好多都是null。也就是說(shuō)有些字段沒(méi)有映射到實(shí)體類上
首先,mybatis與實(shí)體類的映射方式,主要是有兩種。不同的映射方式,也對(duì)應(yīng)不同的接收方式
1)resultMap參數(shù)
通過(guò)編寫resultMap。如下,將數(shù)據(jù)庫(kù)字段和實(shí)體類字段進(jìn)行映射。其中,column為數(shù)據(jù)庫(kù)字段,property為實(shí)體類字段。
<resultMap id="BaseResultMap" type="com.**.job.model.Product"> <id column="id" jdbcType="VARCHAR" property="id" /> <result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" /> <result column="version" jdbcType="INTEGER" property="version" /> </resultMap>
如果采用這種方式映射,那么查詢時(shí),返回類型就可以用restMap的id進(jìn)行接收。將select標(biāo)簽中的接收參數(shù)設(shè)置為resultMap = "BaseResultMap"。
<select id="findAll" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from product_tab </select>
如果此時(shí)你使用resultType屬性接受,有可能就會(huì)造成某些實(shí)體類字段接收不到值,顯示為null
2)resultType參數(shù)
如果不想編寫resultMap,我們也可以使用select 標(biāo)簽中的resultType進(jìn)行接收。
此時(shí)resultType 指向具體的實(shí)體類。
<select id="selectByDto" resultType="com.**.job.model.Product">
但是這種需要滿足下面兩個(gè)條件之一:
- 表中的字段要么和實(shí)體類字段一致。
- 如果表中字段帶下劃線,實(shí)體類中對(duì)應(yīng)的字段不想帶下劃線,就要滿足下劃線轉(zhuǎn)駝峰的方式,例如,表中字段product_url,實(shí)體類中的字段,要寫成productUrl。
如果以上兩個(gè)條件都滿足,還是出現(xiàn)某些實(shí)體類字段為null。就去檢查一下是否設(shè)置了mybatis的mapUnderscoreToCamelCase參數(shù)。該參數(shù)默認(rèn)為false。
將這個(gè)屬性設(shè)置為true。 可以自動(dòng)將以下畫線方式命名的數(shù)據(jù)庫(kù)列映射到 Java 對(duì)象的駝峰式命名屬性中。
設(shè)置方式如下:
總結(jié)如下:
1)如果你寫了resultMap 的xml映射,那么select標(biāo)簽的屬性選擇resultMap。
2)如果你沒(méi)寫resultMap 的xml映射,那也沒(méi)事。mybatis會(huì)自動(dòng)幫你映射。但是你的select標(biāo)簽的屬性要resultType,用于指向具體的實(shí)體類。但同時(shí),你要滿足上面兩點(diǎn)條件。同時(shí)確保mapUnderscoreToCamelCase參數(shù)為true
建議編寫resultMap,只要映射沒(méi)錯(cuò),基本上不會(huì)出現(xiàn)為null的情況,實(shí)體類的字段可以隨便寫。
當(dāng)然如果你庫(kù)表中的字段很多的話,可以使用mybatis-generator生成工具,直接生成resultMap的xml
到此這篇關(guān)于Mybatis查詢Sql結(jié)果未映射到對(duì)應(yīng)得實(shí)體類上的問(wèn)題解決的文章就介紹到這了,更多相關(guān)Mybatis查詢Sql結(jié)果未映射內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源的兩種方式總結(jié)
關(guān)于動(dòng)態(tài)數(shù)據(jù)源的切換的方案有很多,核心只有兩種,一種是構(gòu)建多套環(huán)境,另一種是基于spring原生的AbstractRoutingDataSource切換,這篇文章主要給大家介紹了關(guān)于利用SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源的兩種方式,需要的朋友可以參考下2021-10-10java數(shù)組、泛型、集合在多態(tài)中的使用及對(duì)比
本文主要介紹了java數(shù)組、泛型、集合在多態(tài)中的使用及對(duì)比。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-03-03java短信驗(yàn)證碼獲取次數(shù)限制實(shí)例
這篇文章主要介紹了java短信驗(yàn)證碼獲取次數(shù)限制實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01Java實(shí)現(xiàn)簡(jiǎn)單雙色球搖獎(jiǎng)功能過(guò)程解析
這篇文章主要介紹了Java實(shí)現(xiàn)簡(jiǎn)單雙色球搖獎(jiǎng)功能過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09java eclipse 出現(xiàn) xxx cannot be resolved to a type 錯(cuò)誤解決方法
這篇文章主要介紹了java eclipse 出現(xiàn) xxx cannot be resolved to a type 錯(cuò)誤解決方法的相關(guān)資料,需要的朋友可以參考下2017-03-03