Mybatis連線池_動態sql語句_多表查詢實現

Tonbay發表於2020-12-04

Mybatis連線池

Mybatis中的連線池
	Mybatis連線池提供了3種方式的配置:
		配置的位置:
			主配置檔案SqlMapConfig.xml中的dataSource標籤,type屬性就是表示採用何種連線池方式。
		type屬性的取值:
			POOLED:採用傳統的javax.sql.DataSource規範中的連線池,Mybatis中有針對規範的實現
			UNPOOLED:採用傳統的獲取連線的方式,雖然也實現了Javax.sql.DataSource介面,但是並沒有使用連線池的思想
			JNDI(課外瞭解):採用伺服器提供的JNDI技術實現,來獲取DataSource物件,不同的伺服器所能拿到的DataSource是不								一樣的。  注意:如果不是web或者maven的war工廠,是不能使用的
					我們課程使用的tomcat伺服器,採用的連線池是dbcp連線池
Mybatis中沒有使用C3P0或者Druied連線池技術,而是自己實現了一套Mybatis專用的連線池,
只需要在Datasource中根據自己的需要配置相應的type屬性即可,一般情況下使用POOLED屬性。

1.4 Mybatis中動態sql語句

if標籤

<!-- 例如條件查詢語句
	 在新增條件之前先判斷傳入的引數是否存在,存在則新增條件 
	 test屬性:
			 填寫if的條件
-->
select * from user where 1=1 
<if test="userName != null">
	and username=#{userName}
</if>

where標籤

<!-- 如果條件太多,此時可使用where標籤
	 <where/>可以自動處理第一個and
 	 使sql語句更清晰、簡潔
-->

foreach標籤

<!-- sql語句:select欄位from user where id in(?)
	 <foreach>標籤用於遍歷集合,它的屬性:
		collection:代表要遍歷的集合元素,注意編寫時不要寫#{}
 		open:代表語句的開始部分
		close:代表結束部分
		item:代表遍歷集合的每個元素,生成的變數名
		sperator:代表分隔符
-->

mark

抽取重複的sql語句

<!-- 在配置檔案中配置該語句
		語句中的分號可以忽略
 -->

<sql id="defaultUser">
	select * from user 
</sql>

<!-- 具體使用方法 -->
在select或者其他增刪改標籤中使用<include>標籤引入
    <include refid="defaultUser"></include>

1.5 Mybatis中的多表查詢

概念引入

我們之前學過的表之間的關係:
		一對多
		多對一	
		一對一	
		多對多
這裡不多贅述,我們聚焦在一對多關係中,
例如:單個使用者與訂單
這是一個典型的一對多關係,一個使用者明顯可以擁有多個訂單,當
我們取出訂單中每個資料項與使用者形成對應關係時,這個時候每個
訂單項與使用者是一對一的關係。
綜上所屬,Mybatis處理多對一或者一對多的時候應用了上述方法

一對一查詢(多對一)

多表查詢涉及的知識點比較多,這裡舉例進行說明

mark

mark

這裡講解一下小標題:
通過上面需求可知,我們的一對一其實是表的資料項的一對一關係,
而多對一指的是表之間的關係

通過Mybatis,我們有倆個辦法進行該多對一的多表查詢操作

方式一

通過定義實體類AccountUser的方式儲存查詢結果

定義賬戶資訊的實體類

markmark

編寫sql語句

mark

定義AccountUser類

markmark

定義持久層dao介面

markmark

定義AccountDao.xml

mark

小結

mark

方式二

修改Account類

markmarkmark

修改AccountDao介面中的方法

markmark

重新定義AccountDao.xml檔案

mark

一對多查詢

markmarkmarkmarkmarkmark

使用者持久層Dao介面中加入查詢方法

mark

使用者持久層Dao對映配置檔案

markmark

多對多查詢

markmarkmark

業務要求以及實現sql

mark

業務要求以及實現sql

markmarkmarkmarkmark

編寫Role持久層介面

mark

編寫對映檔案

markmark

反過來,我們根據上面的步驟也可以實現User到Role的多對多關係

mark

相關文章