mybatis 查詢一對一

2022-09-15 17:27:13 字數 1348 閱讀 3817

官方文件

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.create_date

from

t_artile a

where a.user_id = #

<

select

id="getuser"

parametertype

="int"

resulttype

="com.mybatis.model.user"

>

select user_id as userid,

username,

password,

agefrom t_user where user_id=#

select

>

這種方式很簡單, 但是對於大型資料集合和列表將不會表現很好。 問題就是我們熟知的 「n+1 查詢問題」。概括地講,n+1 查詢問題可以是這樣引起的:

這個問題會導致成百上千的 sql 語句被執行。這通常不是期望的。

mybatis 能延遲載入這樣的查詢就是乙個好處,因此你可以分散這些語句同時執行的消 耗。然而,如果你載入乙個列表,之後迅速迭代來訪問巢狀的資料,你會呼叫所有的延遲加 載,這樣的行為可能是很糟糕的。

第二種方法

--------------or-------------------------

select

a.article_id,

a.user_id,

a.title,

a.content,

a.create_date,

b.username,

b.password,

b.age

from

t_artile a

inner join t_user b on a.user_id = b.user_id

where a.user_id = #

這樣寫sql時就要關聯user表了。

mybatis多表查詢一對一

用mybatis多表查詢有兩種方式 建立乙個新的實體類,不建立實體類 乙個新的實體類 例子是聯合兩個表查詢 第乙個表是使用者表user,第二個表是賬戶表account 其中賬戶表的uid欄位是使用者表的id 分別建立表的實體類 user public class user implements se...

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...

mybatis高階查詢 一對一 多對一

mybatis使用標籤 一的一方配置標籤 對應返回值單個實體 多的一方配置 標籤 對應返回值集合 根據實體類的定義,如果是屬性集合就配置,如果返回的資料是乙個實體的就配置 多表查詢時,需要乙個實體類多個表的資料.那麼需要將表與表的關係,也要反應在實體類與實體類之間的關係.配置一條資料的一方,使用實體...