mybatis學習4之一對多關聯

2021-09-25 17:44:42 字數 1685 閱讀 1345

當查詢結果是由多個表組成的,這時就必須手動對映,如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類中主要是...