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