Mybatis一對一關聯查詢

2021-08-17 19:32:38 字數 2958 閱讀 1370

有兩張表,老師表teacher和班級表class,乙個class班級對應乙個teacher,乙個teacher對應乙個class

需求是根據班級id查詢班級資訊(帶老師的資訊)

建立teacherclass表:

create table teacher (

t_id int primary key auto_increment,

t_name varchar(20)

);create table class (

c_id int primary key auto_increment,

c_name varchar(20),

teacher_id int

);alter table class add constraint fk_teacher_id foreign key (teacher_id) references

teacher(t_id);

insert into teacher(t_name) values('ls1');

insert into teacher(t_name) values('ls2');

insert into class(c_name, teacher_id) values('bj_a', 1);

insert into class(c_name, teacher_id) values('bj_b', 2);

老師teacher

package mybatis.bean;

public class teacher

public teacher(int id, string name)

public int getid()

public void setid(int id)

public string getname()

public void setname(string name)

@override

public string tostring()

}

班級class

package mybatis.bean;

public class class

public class(int id, string name, teacher teacher)

public int getid()

public void setid(int id)

public string getname()

public void setname(string name)

public teacher getteacher()

public void setteacher(teacher teacher)

@override

public string tostring()

}

要實現一對一關聯查詢,有兩種方式

1.關聯表查詢

select * from class c, teacher t where c.teacher_id = t.t_id and c.c_id = 1;
2.執行2次查詢

先查詢class表,獲取teacher_id,再查詢teacher表,獲取teacher的資訊

select * from class where c_id = 1;

select * from teacher where t_id = 1;//使用上面得到的teacher_id

這兩種查詢方式就引出了2中方式

使用巢狀結果對映來處理重複的聯合結果的子集

可以理解為封裝聯表查詢的資料(去除重複的資料)

select * from class c, teacher t where c.teacher_id=t.t_id and c.c_id=1
<?xml version="1.0" encoding="utf-8"?>

select * from class c, teacher t where c.teacher_id=t.t_id and c.c_id=#

查詢過程如下:

system.out.println(clazz);

控制台輸出結果為:

class [id=1, name=bj_a, teacher=teacher [id=1, name=ls1]]
這裡使用association標籤,association用於一對一的關聯查詢

通過執行另外乙個sql 對映語句來返回預期的複雜型別

select * from class where c_id=1;

select * from teacher where t_id=1 //1 是上乙個查詢得到的teacher_id 的值

select * from class where c_id=#

select t_id id, t_name name from teacher where t_id=#

這裡使用了association標籤的select屬性,其值對應為中的id的值

這種方式,同樣可以得到正確的結果

Mybatis關聯查詢(一對一,一對多)

複雜查詢時,單錶對應的po類已不能滿足輸出結果集的對映。所以要根據需求建立乙個擴充套件類來作為resulttype的型別。擴充套件類 association的使用 需要在本類中新增字段如下 resulttype 使用resulttype實現較為簡單,如果pojo中沒有包括查詢出來的列名,需要增加列名...

sequelize 管理查詢 一對一關聯查詢

sequelize 提供了兩種一對一關係關聯方法 belongsto 和 hasone 拿users和userinfo這兩個model來說,首先我們需要建立這兩個model,建立modelconst user sequelize.defin users username password nick ...

13 一對一關聯

需求 查詢所有訂單資訊,關聯查詢下單使用者資訊。注意 因為乙個訂單資訊只會是乙個人下的訂單,所以從查詢訂單資訊出發關聯查詢使用者資訊為一對一查詢。如果從使用者資訊出發查詢使用者下的訂單資訊則為一對多查詢,因為乙個使用者可以下多個訂單。newsdata one to one tag tag one t...