Mybatis 5 多對一 一對多

2022-09-12 09:24:10 字數 1742 閱讀 3081

例子為5個學生,對應1個老師。

表結構為:

student的tid為外來鍵,關聯teacher的id。

現要查詢所有學生,附帶上老師的資訊(包括姓名)。可以用兩種方式,1.巢狀處理結果集對映 2.巢狀處理查詢

1.寫實體類

student實體類:

private int id;

private string name;

private teacher teacher;

teacher實體類

int id;

string name;

2.寫xml

方法一 巢狀處理結果集對映

select s.id sid, s.name sname,t.id tid, t.name tname  from mybatis1.student s,mybatis1.teacher t where s.tid = t.id

為聯合,用於對映乙個物件(teacher),使用j**atype來指定物件

方法二 巢狀處理查詢

先寫

select * from mybatis1.student

再寫

select * from mybatis1.teacher where id = #

也就是先查找到了tid,然後使用tid再去查詢老師的name。

現要查詢乙個老師,附帶上他所帶的所有學生的資訊。同樣可以用兩種方式,**1.巢狀處理結果集對映 2.巢狀處理查詢 **

1.寫實體類

student實體類:

private int id;

private string name;

private int tid;

teacher實體類

int id;

string name;

private liststudents;

2.寫xml

方法一 巢狀處理結果集對映

select t.name tname,t.id tid, s.name sname, s.id sid from mybatis1.student s,mybatis1.teacher t where s.tid = t.id and t.id = #

),使用oftype來指定集合中物件的型別方法二 巢狀處理查詢

先寫

select * from mybatis1.teacher where id = #

再寫

select * from mybatis1.student where tid = #

也就是先查找到了老師的id,然後使用id再去查詢學生的資訊。

總結:多對一(對映乙個物件)使用association,一對多(對映集合)使用collection

j**atype用來指定實體類中屬性的型別

oftype用來指定對映到集合中pojo型別

mybatis之一對一,一對多

resulttype 直接表示返回型別 基本資料型別 引用資料型別 resultmap 對外部resultmap 資料庫字段資訊和物件屬性不一樣 複雜的聯合查詢,自由控制對映結果 注 它們兩個不能同時存在 association select from class c,teacher t where...

複雜查詢條件多對一,一對多

1.sql語句,建立資料庫 create tableteacher idint 10 not null,namevarchar 30 default null,primary key id engine innodb default charset utf8 insert into teacher ...

mybatis詳解 關聯查詢 一對一 一對多(5)

商品訂單模型 需求 查詢所有訂單資訊,關聯查詢下單使用者資訊。注意 乙個使用者可以有多個訂單資訊,乙個訂單只能對應乙個使用者 方法1 使用resulttype 使用resulttype,改造訂單pojo類,此pojo類中包括了訂單資訊和使用者資訊 這樣返回物件的時候,mybatis自動把使用者資訊也...