一:連線池:資料庫連線池負責分配,管理,釋放資料庫連線
實際開發中一般都會使用連線池,可以減少獲取連線所消耗的時間
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,王五的餘額不會增加,最終的結果為張三減少...