mybatis的連線池 事務

2021-09-28 13:33:19 字數 2413 閱讀 5596

一:連線池:資料庫連線池負責分配,管理,釋放資料庫連線

實際開發中一般都會使用連線池,可以減少獲取連線所消耗的時間

mybatis 中資料來源的配置

我們的資料來源配置就是在 sqlmapconfig.xml 檔案中

type

="pooled"

>

name

="driver"

value

="$"

/>

name

="url"

value

="$"

/>

name

="username"

value

="$"

/>

name

="password"

value

="$"

/>

datasource

>

三種連線池

mybatis 在初始化時,根據>

的 type 屬性來建立相應型別的的資料來源 datasource,即:

type=」pooled」:mybatis 會建立 pooleddatasource 例項

type=」unpooled」 : mybatis 會建立 unpooleddatasource 例項

type=」jndi」:mybatis 會從 jndi 服務上查詢 datasource 例項,然後返回使用

具體原始碼分析 省略

二:mybatis的事務控制

在 jdbc 中我們可以通過手動方式將事務的提交改為手動方式,通過setautocommit()方法就可以調整。那麼我們的 mybatis 框架因為是對 jdbc 的封裝,所以 mybatis 框架的事務控制方式,本身也是用 jdbc 的

setautocommit()方法來設定事務提交方式的。

mybatis 中事務提交方式

通過分析我們能夠發現之前的 cud 操作過程中,我們都要手動進

行事務的提交,原因是 setautocommit()方法,在執行時它的值被設定為 false 了,所以我們在 cud 操作中, 必須通過 sqlsession.commit()(設定**factory.opensession(true);即為自動提交)。

mybatis 的動態 sql 語句

動態 sql 之標籤

持久層的dao對映配置

"findbyuser"

resulttype

="user"

parametertype

="user"

>

select * from user where 1=1

test

="username!=null and username != ''"

>

and username like #

if>

test

="address != null"

>

and address like #

if>

select

>

動態 sql 之標籤

"findinids"

resulttype

="user"

parametertype

="queryvo"

>

refid

="defaultsql"

>

include

>

>

test

="ids != null and ids.size() > 0"

>

collection

="ids"

open

="id in ( "

close

=")"

item

="uid"

separator

=","

> #

foreach

> if

>

where

>

select

>

sql 語句:

select 字段 from user where id in (?)

>

標籤用於遍歷集合,它的屬性:

collection:代表要遍歷的集合元素,注意編寫時不要寫#{}

open:代表語句的開始部分

close:代表結束部分

item:代表遍歷集合的每個元素,生成的變數名

sperator:代表分隔符

mybatis連線池原理

補充說明 1.pooleddatasourc中包含乙個poolstate物件,這個物件包含了兩個集合,idleconnections 儲存連線池中空閒的執行緒 activeconnections 儲存連線池中活動的執行緒 2.建立新執行緒 pooledconnection conn new pool...

事務與連線池

開啟事務 start transaction begin 提交事務 commit 回滾事務 rollback public void insert user user catch sqlexception e catch sqlexception e1 finally 原子性 指事務是乙個不可分割的...

事務,Properties,dbcp連線池

preparedstatement properties dbcp連線池 事務是為了解決sql語句執行出問題的情況,比如張三需要給王五轉500元錢,需要完成張三的餘額減500,王五的餘額加500,sql執行完張三的更新操作後出現了異常,就不會再繼續執行sql,王五的餘額不會增加,最終的結果為張三減少...