执行SQL-DefaultSqlSession.selectOne()
selectOne()最終也是調(diào)用了selectList()。
在SelectList()中,我們先根據(jù)command name(Statement ID)從Configuration中拿到MappedStatement,這個(gè)ms 上面有我們?cè)趚ml 中配置的所有屬性,包括id、statementType、sqlSource、useCache、入?yún)ⅰ⒊鰠⒌鹊取?/p>
然后執(zhí)行了Executor 的query()方法
前面我們說(shuō)到了Executor 有三種基本類(lèi)型,同學(xué)們還記得是哪幾種么?
SIMPLE/REUSE/BATCH,還有一種包裝類(lèi)型,CachingExecutor。
那么在這里到底會(huì)選擇哪一種執(zhí)行器呢?
我們要回過(guò)頭去看看DefaultSqlSession 在初始化的時(shí)候是怎么賦值的,這個(gè)就是我們的會(huì)話(huà)創(chuàng)建過(guò)程。
如果啟用了二級(jí)緩存,就會(huì)先調(diào)用CachingExecutor 的query()方法,里面有緩存相關(guān)的操作,然后才是再調(diào)用基本類(lèi)型的執(zhí)行器,比如默認(rèn)的SimpleExecutor。
在沒(méi)有開(kāi)啟二級(jí)緩存的情況下,先會(huì)走到BaseExecutor 的query()方法(否則會(huì)先走到CachingExecutor)。
?
總結(jié)
以上是生活随笔為你收集整理的执行SQL-DefaultSqlSession.selectOne()的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 执行SQL-MapperMethod.e
- 下一篇: BaseExecutor.query()