您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)mybatis讀取mapper文件有哪幾種方式的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
mybatis讀取mapper文件有哪幾種方式?優(yōu)先級如何?
<!-- 使用相對于類路徑的資源引用 --><mappers> <mapper resource="org/mybatis/builder/AuthorMapper.xml"/> <mapper resource="org/mybatis/builder/BlogMapper.xml"/> <mapper resource="org/mybatis/builder/PostMapper.xml"/></mappers>
<!-- 使用完全限定資源定位符(URL) --><mappers> <mapper url="file:///var/mappers/AuthorMapper.xml"/> <mapper url="file:///var/mappers/BlogMapper.xml"/> <mapper url="file:///var/mappers/PostMapper.xml"/></mappers>
<!-- 使用映射器接口實現(xiàn)類的完全限定類名 --><mappers> <mapper class="org.mybatis.builder.AuthorMapper"/> <mapper class="org.mybatis.builder.BlogMapper"/> <mapper class="org.mybatis.builder.PostMapper"/></mappers>
<!-- 將包內(nèi)的映射器接口實現(xiàn)全部注冊為映射器 --><mappers> <package name="org.mybatis.builder"/></mappers>
優(yōu)先級: package>resource>url>class
mubatis的exectuor有幾種方式
SimpleExecutor: 簡單執(zhí)行器,是MyBatis中默認(rèn)使用的執(zhí)行器,每執(zhí)行一次update或select,就開啟一個Statement對象,用完就直接關(guān)閉Statement對象(可以是Statement或者是PreparedStatment對象)
ReuseExecutor: 可重用執(zhí)行器,這里的重用指的是重復(fù)使用Statement,它會在內(nèi)部使用一個Map把創(chuàng)建的Statement都緩存起來,每次執(zhí)行SQL命令的時候,都會去判斷是否存在基于該SQL的Statement對象,如果存在Statement對象并且對應(yīng)的connection還沒有關(guān)閉的情況下就繼續(xù)使用之前的Statement對象,并將其緩存起來。因為每一個SqlSession都有一個新的Executor對象,所以我們緩存在ReuseExecutor上的Statement作用域是同一個SqlSession。
BatchExecutor: 批處理執(zhí)行器,用于將多個SQL一次性輸出到數(shù)據(jù)庫
CachingExecutor
: 緩存執(zhí)行器,先從緩存中查詢結(jié)果,如果存在,就返回;如果不存在,再委托給Executor delegate 去數(shù)據(jù)庫中取,delegate可以是上面任何一個執(zhí)行器
mybatis的一級緩存是默認(rèn)開啟的嗎?開啟的話是怎么使用的?
因為cacheEnabled 所以一級緩存是默認(rèn)開啟的 。通過id offset limit sql 四個屬性來生成緩存的key
一級緩存通過 HashMap 實現(xiàn),它的鍵對象根據(jù)SQL的ID,參數(shù),SQL本身,分頁參數(shù)以及JDBC的參數(shù)信息構(gòu)成。
二級緩存是mapper級別的緩存,多個SqlSession去操作同一個Mapper的sql語句,多個SqlSession去操作數(shù)據(jù)庫得到數(shù)據(jù)會存在二級緩存區(qū)域,多個SqlSession可以共用二級緩存,二級緩存是跨SqlSession的。
二級緩存是多個SqlSession共享的,其作用域是mapper的同一個namespace,第一次執(zhí)行完畢會將數(shù)據(jù)庫中查詢的數(shù)據(jù)寫到緩存(內(nèi)存),第二次會從緩存中獲取數(shù)據(jù)將不再從數(shù)據(jù)庫查詢,從而提高查詢效率。
Mybatis默認(rèn)沒有開啟二級緩存需要在setting全局參數(shù)中配置開啟二級緩存。
如果緩存中有數(shù)據(jù)就不用從數(shù)據(jù)庫中獲取,大大提高系統(tǒng)性能。
不建議使用二級緩存 不同的namespace操作同一個表的話 會出現(xiàn)數(shù)據(jù)混亂
阿里面試題:A系統(tǒng)傳B系統(tǒng)一條sql如何判斷sql是正確是sql ???
什么是orm框架? 用于實現(xiàn)面向?qū)ο缶幊陶Z言里不同類型系統(tǒng)的數(shù)據(jù)之間的轉(zhuǎn)換
感謝各位的閱讀!關(guān)于“mybatis讀取mapper文件有哪幾種方式”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。