對resultMap中column的理解

2021-09-23 20:43:51 字數 1739 閱讀 2286

總之,column是指查詢出來的欄位名。

//pojo屬性與資料庫字段對應一致時,中可以不用寫對映

//如果有個別的字段不一致,可以只寫不一致的字段

//例如:只寫

select * from `user` where id = #

//結果為:user

例如:select id,user_name u,age,bir from `user` where id = #

//結果為:user

反例:

select id,user_name u,age,bir from `user` where id = #

//結果為:user

//對username起了別名u,column還是預設是資料庫字段,沒有修改,輸出的結果此欄位username為null!

總結:column值實際上是指查詢出的字段!預設情況下是資料庫字段。

(1)也就是說,凡是查詢出來的字段都要寫,沒有查詢的字段不需要寫,因為都沒有查詢這個字段,寫了也沒用。但是一般都寫全,因為乙個xml檔案一般只配置乙個(可以配多個),那麼不同的查詢語句可能查詢出來的字段不一致,盡量補全。

(2)單錶查詢時可以省略一致的字段。

(3)property的值是屬性名,屬性名不是類裡面定義的變數名,而是set/get方法的方法名去掉set/get,然後首字母小寫。

以下以為例,

與的colum值的含義相同。

例如:

反例:

select o.* from `order` o,`user` u where u.id = o.user_id

listlist = sqlsession.selectlist("findorderanduser");

for (order or : list )

輸出結果為:

order

order

order

order

select???from `order` o,`user` u where u.id = o.user_id

注意:此時兩個表關聯查詢出的所有字段,其中order的id與user表的id欄位名一致,輸出時需要對其中乙個字段改名!

例如:在資料庫中輸入此查詢語句,輸出的user的id自動改為id1

那麼user表id的column值不能寫id,因為這樣與主表id欄位重複,最終輸出的user表的id會是主表的id值!!!解決方法就是對user表的id起別名!

例如:select

o.*,

u.id uid,

u.user_name,

u.age

from

`order` o ,`user` u where o.user_id = u.id

listlist = sqlsession.selectlist("findorderanduser");

system.out.println(list.get(0).getuser());

查詢結果為:

user

mybatis中的resultMap元素和級聯

mybaits中的級聯分為三種 鑑別器 根據某些條件決定採用具體的實現方案 一對一 比如學生和學生證 一對多 比如班主任和學生 鑑別器配置 select id,role name note as note from t role where id 測試程式 public class test 測試結...

mybatis中resultMap巢狀對映例項

public class wastedetail implements serializablepublic class wastesuname 注意,返回結果集中巢狀 list 注意 關聯查詢,用pagehel分頁會導致分頁資料不正確。按住表分頁的話,從表的資料將會為空。使用where條件,將分頁...

mybatis中的resultmap的具體使用

如下的resulttype的實現方式 select u.id,u.user name username,u.user password userpassword,u.user email useremail,u.user info userinfo,u.head img headimg,u.crea...