總之,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...