mybatis多表查詢一對一

2021-10-25 02:43:20 字數 2355 閱讀 1801

用mybatis多表查詢有兩種方式:建立乙個新的實體類,不建立實體類

乙個新的實體類:

例子是聯合兩個表查詢:第乙個表是使用者表user,第二個表是賬戶表account

其中賬戶表的uid欄位是使用者表的id

分別建立表的實體類:

user

public class user implements serializable 

public void setid(integer id)

public string getusername()

public void setusername(string username)

public date getbirthday()

public void setbirthday(date birthday)

public string get***()

public void set***(string ***)

@override

public string tostring() ';

}

account:

public class account implements serializable 

public void setid(integer id)

public integer getuid()

public void setuid(integer uid)

public double getmoney()

public void setmoney(double money)

@override

public string tostring() ';}}

查詢需要是user表的使用者姓名和生日加上account表的所有資訊,查詢語句好寫select a.*,u.username,u.birthday from account a,user u where u.id = a.uid;

但是難的是結果集如何封裝,這個時候我們可以想到建乙個新的實體類,將要查詢的字段都放進去,然後將查詢結果封裝到這個實體類裡面。

accountuser:

public class accountuser extends account

public void setusername(string username)

public date getbirthday()

public void setbirthday(date birthday)

@override

public string tostring() ';}}

這個類繼承自account所以包含accout的所有屬性,並且宣告兩個生日和使用者名字段。

xml檔案中:

select a.*,u.username,u.birthday from account a,user u where u.id = a.uid;

resulttype裡面寫的是新建立的實體類。

第二種是不建立實體類,在account實體類中新加乙個user類的變數:

public class account implements serializable 

public void setuser(user user)

public integer getid()

public void setid(integer id)

public integer getuid()

public void setuid(integer uid)

public double getmoney()

public void setmoney(double money)

@override

public string tostring() ';}}

這樣就可以把結果集封裝在這個類中,但是需要在xml中配置對應的字段。

//property對應表中的字段column對應查詢語句中的字段並且表中的主鍵用其他欄位用

select u.*,a.id as aid,a.uid,a.money from account a,user u where u.id = a.uid;

Mybatis的多表(一對一)查詢

mybatis的多表 一對一 查詢 示例 使用者和賬戶 乙個使用者可以有多個賬戶 一對多 乙個賬戶只能屬於乙個使用者 一對一 解決辦法 建立兩張表 使用者表,賬戶表 讓使用者表和賬戶表之間具備一對多的關係 需要使用外來鍵在賬戶中新增。建立兩個實體類 使用者實體類和賬戶實體類 讓使用者的實體類和賬戶的...

mybatis 查詢一對一

官方文件 public inte ce user getuser intuserid public inte ce list getarticlebyuserid int userid 第一種方法 select a.article id,a.user id,a.title,a.content,a.c...

MyBatis一對一以及一對多關聯表查詢

當前資料庫中存在三個表clazz和teacher以及student,資料字典如下 clazz c id,c name,teacher id teacher t id,t name student s id,s name,class id 三個表對應的實體類如下 public class clazzp...