當查詢結果是由多個表組成的,這時就必須手動對映,如order(訂單表),user(使用者表),以order為中心,乙個order只能對應乙個user。
sql語句:select o.id,o.user_id,o.number,o.createtime,u.username from user u left join orders o on u.id=o.user_id
乙個user可以有多個order,這裡是以user為中心,所以無論user是否有order,user都會出現在結果中,因此執行結果:
select o.id,o.user_id,o.number,o.createtime,u.username from user u left join orders o on u.id=o.user_id
因為一對多關聯,以user為中心,乙個user可以對應多個order,所以需要在user物件中新增乙個list<-order->集合
public listselectall();
public listselectorder();
public listselectuser();}
測試**進行測試:
@test
public void onetomore()
}
因為在user1類中重寫了tostring方法,只輸出資料庫查詢結果對應的屬性的(因為其他屬性為null):
@override
public string tostring()
所以執行結果:
user1 [ username=王五, orderlist=[order [id=3, userid=1, number=1000010, createtime=wed feb 04 13:22:35 cst 2015, note=null, user=null], order [id=4, userid=1, number=1000011, createtime=tue feb 03 13:22:41 cst 2015, note=null, user=null]]]
user1 [ username=張三, orderlist=[order [id=5, userid=10, number=1000012, createtime=thu feb 12 16:13:23 cst 2015, note=null, user=null]]]
user1 [ username=陳小明, orderlist=]
user1 [ username=張三丰, orderlist=]
user1 [ username=znsulbkjs, orderlist=]
user1 [ username=李四, orderlist=]
user1 [ username=小明, orderlist=]
注意:
因為一對多關聯,以user為中心,乙個user可以對應多個order,所以需要在user物件中新增乙個list<-order->集合
別忘了order和user類要實現序列化介面
如果發生了錯誤首先看property中值是否與類屬性名是否一致,以及資料庫列名稱與column值是否一致
屬性需要有get和set方法
MyBatis高階對映之 一對一(一對多)關聯對映
在hibernate中可以進行一對一,多對一,一對多,多對多,mybatis中也可以實現這種對映,但是對映就顯得比較麻煩了,下面看乙個一對一的例子,學了hibernate都知道其實一對一跟一對多的原理其實是一致的,所以也是一對多的例子 首先配置sqlmapconfig.xml public conf...
Mybatis 一對多關聯查詢
1.配置檔案 select u.id u.username u.address u.u.birthday o.id oid,o.number o.createtime o.note from user u left join order o on o.user id u.id 2.介面名字3.ret...
MyBatis 一對多關聯查詢
上篇學習了一對一關聯查詢,這篇我們學習一對多關聯查詢。一對多關聯查詢關鍵點則依然是配置resultmap,在resultmap中配置collection屬性,別忽略了oftype屬性。建立表author 表blog,構建一對多的查詢場景。建立author blog model。author類中主要是...