mybatis-puls中的resultMap數(shù)據(jù)映射
mybatis-puls resultMap數(shù)據(jù)映射
resultType
resultType可以把查詢結(jié)果封裝到pojo類型中,但必須pojo類的屬性名和查詢到的數(shù)據(jù)庫表的字段名一致。
如果sql查詢到的字段與pojo的屬性名不一致,則需要使用resultMap將字段名和屬性名對應(yīng)起來,進(jìn)行手動配置封裝,將結(jié)果映射到pojo中!
resultMap
resultMap可以實(shí)現(xiàn)將查詢結(jié)果映射為復(fù)雜類型的pojo,比如在查詢結(jié)果映射對象中包括pojo和list實(shí)現(xiàn)一對一查詢和一對多查詢。
- 數(shù)據(jù)庫字段:user_id,
- 實(shí)體類字段:userId
- 需要手動配置設(shè)置resultMap
Mapper中基本查詢語句
<!-- 查詢所有的訂單數(shù)據(jù) --> <!-- resultMap:填入配置的resultMap標(biāo)簽的id值 --> <select id="queryOrderAll" resultMap="orderResultMap"> SELECT id, user_id, number, createtime, note FROM `order` </select>
resultMap中字段映射
<!-- resultMap最終還是要將結(jié)果映射到pojo上,type就是指定映射到哪一個pojo --> <!-- id:設(shè)置ResultMap的id --> <resultMap type="order" id="orderResultMap"> <!-- 定義主鍵 ,非常重要。如果是多個字段,則定義多個id --> <!-- property:主鍵在pojo中的屬性名 --> <!-- column:主鍵在數(shù)據(jù)庫中的列名 --> <id property="id" column="id" /> <!-- 定義普通屬性 --> <result property="userId" column="user_id" /> <result property="number" column="number" /> <result property="createtime" column="createtime" /> <result property="note" column="note" /> </resultMap>
Mybatis ResultMap結(jié)果集映射
當(dāng)我們的POJO中的字段與數(shù)據(jù)庫中的字段不一致時,在利用resultType進(jìn)行結(jié)果集映射時,不一致的字段將會被賦值為null,這時我們可以利用ResultMap映射進(jìn)行賦值
POJO
@Data @AllArgsConstructor @NoArgsConstructor public class User { private int id; private String name; private String password; }
數(shù)據(jù)庫字段
ResultType
<select id="getUserList" resultType="User"> select * from user; </select>
可以出數(shù)據(jù)庫中是pwd,而pojo中是password,這樣利用resultType是無法映射的,password查出來的結(jié)果為null
ResultMap
<select id="getUserList" resultMap="UserMap"> select * from user; </select> <resultMap id="UserMap" type="User"> <result column="id" property="id"/> <result column="name" property="name"/> <result column="pwd" property="password"/> </resultMap>
我們用resultMap替換resultType
UserMap與下面resultMap里的id屬性的值保持一致即可
type為返回值類型,這里我之所以是User是因?yàn)槲移鹆藙e名,如果沒有起別名要寫出完整的路徑
在resultMap中,column代表數(shù)據(jù)庫中的列,也就是數(shù)據(jù)庫里的字段,property為數(shù)據(jù)庫中的字段映射的結(jié)果,這里我們與pojo保持一致即可,數(shù)據(jù)庫中的pwd被映射為password,pojo里的password也就能賦值成功了
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):順序隊(duì)列和循環(huán)隊(duì)列
下面小編就為大家分享一篇java隊(duì)列實(shí)現(xiàn)方法(順序隊(duì)列,循環(huán)隊(duì)列),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-08-08Spring Security基本架構(gòu)與初始化操作流程詳解
這篇文章主要介紹了Spring Security基本架構(gòu)與初始化操作流程,Spring Security是一個能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架2023-03-03java實(shí)現(xiàn)哈弗曼編碼與反編碼實(shí)例分享(哈弗曼算法)
本文介紹java實(shí)現(xiàn)哈弗曼編碼與反編碼實(shí)例,大家參考使用吧2014-01-01springboot如何解決非controller類引用service的問題
這篇文章主要介紹了springboot如何解決非controller類引用service的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02Mybatis-plus配置多數(shù)據(jù)源,連接多數(shù)據(jù)庫方式
這篇文章主要介紹了Mybatis-plus配置多數(shù)據(jù)源,連接多數(shù)據(jù)庫方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06Java實(shí)現(xiàn)SHA-1算法實(shí)例
這篇文章主要介紹了Java實(shí)現(xiàn)SHA-1算法,實(shí)例分析了java實(shí)現(xiàn)SHA-1算法的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03Spring Cloud Gateway重試機(jī)制的實(shí)現(xiàn)
這篇文章主要介紹了Spring Cloud Gateway重試機(jī)制的實(shí)現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03