在opensession()處加上斷點並執行—>defaultsqlsessionfactory類的opensession()方法
@override
public sqlsession opensession()
進入opensessionfromdatasource,裡面包含資料來源和事務以及建立了四大物件的executor
private sqlsession opensessionfromdatasource
(executortype exectype, transactionisolationlevel level,
boolean autocommit)
catch
(exception e)
finally
}
executor 非常重要,進入configuration.newexecutor(tx, exectype);看executor 建立過程,在這裡會根據defaultexecutortype 型別建立不同的executor 【預設是******,詳細見mybatis官方文件】,如果開啟了二級快取,
會建立cachingexecutor。
最後執行interceptorchain.pluginall(executor);使用每個***對executor 進行包裝並返回【與以後寫外掛程式息息相關】。
public executor newexecutor
(transaction transaction, executortype executortype)
else
if(executortype.reuse == executortype)
else
if(cacheenabled)
executor =
(executor) interceptorchain.
pluginall
(executor)
;return executor;
}
最後加到defaultsqlsessionfactory類建立new defaultsqlsession(configuration, executor, autocommit);並返回。 mybatis中獲取引數
1 方式 parameter是數字時用 模糊查詢 時用。例 select from account where userid select from account where userid 123 select from account where userid like select from ...
mybatis學習筆記三之mybatis外掛程式
一 外掛程式介紹 一般情況下,開源框架都會提供外掛程式或其他形式的擴充套件點,供開發者自行擴充套件。一是增加了框架的靈活性 二是開發者可以結合實際需求,對框架進行擴充套件。以mybatis為例,我們可基於mybatis外掛程式機制實現分頁 分表 監控等功能,在無形中增強功能。二 mybatis外掛程...
mybatis不提交事務獲取主鍵
transactional propagation propagation.required,rollbackfor exception.class insert運算元據庫時候,先得到對應的主鍵然後提交事務插入對應資料 例 insert into table values user.insert t...