您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關mybatis-puls中resultMap數據映射的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
resultType可以把查詢結果封裝到pojo類型中,但必須pojo類的屬性名和查詢到的數據庫表的字段名一致。
如果sql查詢到的字段與pojo的屬性名不一致,則需要使用resultMap將字段名和屬性名對應起來,進行手動配置封裝,將結果映射到pojo中!
resultMap可以實現將查詢結果映射為復雜類型的pojo,比如在查詢結果映射對象中包括pojo和list實現一對一查詢和一對多查詢。
數據庫字段:user_id,
實體類字段:userId
需要手動配置設置resultMap
<!-- 查詢所有的訂單數據 --> <!-- resultMap:填入配置的resultMap標簽的id值 --> <select id="queryOrderAll" resultMap="orderResultMap"> SELECT id, user_id, number, createtime, note FROM `order` </select>
<!-- resultMap最終還是要將結果映射到pojo上,type就是指定映射到哪一個pojo --> <!-- id:設置ResultMap的id --> <resultMap type="order" id="orderResultMap"> <!-- 定義主鍵 ,非常重要。如果是多個字段,則定義多個id --> <!-- property:主鍵在pojo中的屬性名 --> <!-- column:主鍵在數據庫中的列名 --> <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>
當我們的POJO中的字段與數據庫中的字段不一致時,在利用resultType進行結果集映射時,不一致的字段將會被賦值為null,這時我們可以利用ResultMap映射進行賦值
@Data @AllArgsConstructor @NoArgsConstructor public class User { private int id; private String name; private String password; }
<select id="getUserList" resultType="User"> select * from user; </select>
可以出數據庫中是pwd,而pojo中是password,這樣利用resultType是無法映射的,password查出來的結果為null
<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是因為我起了別名,如果沒有起別名要寫出完整的路徑
在resultMap中,column代表數據庫中的列,也就是數據庫里的字段,property為數據庫中的字段映射的結果,這里我們與pojo保持一致即可,數據庫中的pwd被映射為password,pojo里的password也就能賦值成功了
關于“mybatis-puls中resultMap數據映射的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。