Mybatis實(shí)體類屬性與數(shù)據(jù)庫不一致解決方案
當(dāng)實(shí)體類屬性和數(shù)據(jù)庫不一致時(shí),使用mybatis查詢數(shù)據(jù)庫返回實(shí)體類自動(dòng)封裝就會(huì)出現(xiàn)問題。針對(duì)這種情況,有兩種解決方案。
1、使用別名查詢
<!-- 配置查詢所有操作 --> <select resultType='com.itheima.domain.User'>select id as userId,username as userName,birthday as userBirthday,sex as userSex,address as userAddress from user</select>
優(yōu)點(diǎn):查詢效率高
缺點(diǎn):如果我們的查詢很多,都使用別名的話寫起來很麻煩
2、定義resultMap
resultMap 標(biāo)簽可以建立查詢的列名和實(shí)體類的屬性名稱不一致時(shí)建立對(duì)應(yīng)關(guān)系。從而實(shí)現(xiàn)封裝。在 select 標(biāo)簽中使用 resultMap 屬性指定引用即可。同時(shí) resultMap 可以實(shí)現(xiàn)將查詢結(jié)果映射為復(fù)雜類型的 pojo,比如在查詢結(jié)果映射對(duì)象中包括 pojo 和 list 實(shí)現(xiàn)一對(duì)一查詢和一對(duì)多查詢。
<!-- 建立User實(shí)體和數(shù)據(jù)庫表的對(duì)應(yīng)關(guān)系type屬性:指定實(shí)體類的全限定類名id屬性:給定一個(gè)唯一標(biāo)識(shí),是給查詢select 標(biāo)簽引用的。--> <resultMap type='com.itheima.domain.User' id='userMap'> <id column='id' property='userId'/> <result column='username' property='userName'/> <result column='sex' property='userSex'/> <result column='address' property='userAddress'/> <result column='birthday' property='userBirthday'/></resultMap><!--id 標(biāo)簽:用于指定主鍵字段result 標(biāo)簽:用于指定非主鍵字段column 屬性:用于指定數(shù)據(jù)庫列名property 屬性:用于指定實(shí)體類屬性名稱--><!-- 配置查詢所有操作--><select resultMap='userMap'>select * from user</select>
優(yōu)點(diǎn):代碼書寫簡潔,提高開發(fā)效率
缺點(diǎn):查詢效率低
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. mysql的like模式2. MySQL分區(qū)的優(yōu)點(diǎn)3. 從舊版本SQL Server中重新存儲(chǔ)數(shù)據(jù)4. MYSQL(電話號(hào)碼,身份證)數(shù)據(jù)脫敏的實(shí)現(xiàn)5. mysql啟動(dòng)時(shí)報(bào)錯(cuò) ERROR! Manager of pid-file quit without6. 如何實(shí)現(xiàn)MySQL數(shù)據(jù)庫的備份與恢復(fù)7. 加密你的Access數(shù)據(jù)庫asp打開方法8. 什么是Access數(shù)據(jù)庫9. Oracle根據(jù)逗號(hào)拆分字段內(nèi)容轉(zhuǎn)成多行的函數(shù)說明10. mysql 視圖操作和存儲(chǔ)過程

網(wǎng)公網(wǎng)安備