成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Mybatis使用陷阱

cgspine / 3299人閱讀

摘要:解決辦法很簡單,就是在使用的時(shí)候一定要寫上屬性。實(shí)際上關(guān)于的作用在官方文檔中很隱晦的提到過了見。比如下面這個(gè)配置啟用了,且部分配置了的映射。解決辦法有兩個(gè)不配置的映射不使用參考文檔的問題在使用懶加載特性的時(shí)候有一點(diǎn)需要注意,就是要把設(shè)置為。

緩存不是基于行的

“緩存并不是基于行的”的意思就是,mybatis緩存的粒度是全部查詢結(jié)果,而不是查詢結(jié)果的每行,這也就意味著每次查詢,就只有一份緩存,而不是有幾行就有幾分緩存。

這點(diǎn)和hibernate很不同,hibernate的緩存是基于每個(gè)對象的,即查詢出來的有幾個(gè)對象,那就有幾份緩存。

mybatis無法像hibernate給每個(gè)對象做緩存,主要原因是mybatis非常自由,能夠配置任意的返回結(jié)果類型,這也就是說返回的結(jié)果并不一定都有主鍵,如此一來也就沒有辦法標(biāo)識(shí)某一行數(shù)據(jù)和哪個(gè)返回結(jié)果對應(yīng),而hibernate是強(qiáng)制你所映射的每個(gè)類都要有主鍵的。

參考文檔:http://www.mybatis.org/mybati...

緩存默認(rèn)沒有失效時(shí)間

“緩存默認(rèn)沒有失效時(shí)間”的意思是如果我們直接在數(shù)據(jù)庫里修改數(shù)據(jù),那么每次用mybatis查詢的時(shí)候,使用的還是上一次的緩存結(jié)果,且這份緩存一直有效,除非我們通過mapper調(diào)用了update、delete、insert方法,這些方法會(huì)使緩存失效。解決辦法很簡單,就是在使用的時(shí)候一定要寫上flushInterval屬性。

參考文檔:http://www.mybatis.org/mybati...

使用Partial Auto-mapping后,自動(dòng)去重問題

Partial Auto-mapping的意思是你對ResultMap只提供了部分字段的配置而不是全部字段,但是如果你的這個(gè)ResultMap沒有設(shè)置ID,也就是主鍵,那么mybatis將會(huì)根據(jù)你提供的這一部分字段配置來判斷兩行數(shù)據(jù)是否重復(fù),并且會(huì)將重復(fù)的去掉。

實(shí)際上關(guān)于id的作用在官方文檔中很隱晦的提到過了:見id & result。

比如下面這個(gè)配置啟用了autoMapping,且部分配置了property的映射。在這種情況下,如果查詢出兩條記錄了,而這兩條記錄的task_key的值是一樣的時(shí)候,mybatis就會(huì)認(rèn)為是同一條,最終返回給你一個(gè)AuditLog


   

解決辦法有兩個(gè):

不配置property的映射:


不使用automapping:


    
    
    
    
    
    

參考文檔:http://www.mybatis.org/mybati...

aggressiveFetch的問題

在使用mybatis懶加載特性的時(shí)候有一點(diǎn)需要注意,就是要把aggressiveFetch設(shè)置為false。

根據(jù)官方文檔,當(dāng)設(shè)置為true的時(shí)候,如果你get了懶加載屬性,那么其他懶加載屬性也會(huì)一并加載。

但實(shí)際情況時(shí),當(dāng)設(shè)置了true的時(shí)候,如果你get了任一屬性,那么所有懶加載屬性也會(huì)一并加載。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64935.html

相關(guān)文章

  • 【ES6】改變 JS 內(nèi)置行為的代理與反射

    摘要:通過對這些底層內(nèi)置對象的代理陷阱和反射函數(shù),讓開發(fā)者能進(jìn)一步接近引擎的能力。顯然,與要求代理目標(biāo)對象必須是一個(gè)函數(shù),這兩個(gè)代理陷阱在函數(shù)的執(zhí)行方式上開啟了很多的可能性,結(jié)合使用就可以完全控制任意的代理目標(biāo)函數(shù)的行為。 代理(Proxy)可以攔截并改變 JS 引擎的底層操作,如數(shù)據(jù)讀取、屬性定義、函數(shù)構(gòu)造等一系列操作。ES6 通過對這些底層內(nèi)置對象的代理陷阱和反射函數(shù),讓開發(fā)者能進(jìn)一步接...

    lushan 評論0 收藏0
  • 深入理解ES6筆記(十一)代理(Proxy)和反射(Reflection)API(12)

    摘要:是陷阱函數(shù)對應(yīng)的反射方法,同時(shí)也是操作的默認(rèn)行為。對象外形指的是對象已有的屬性與方法的集合,由于該屬性驗(yàn)證只須在讀取屬性時(shí)被觸發(fā),因此只要使用陷阱函數(shù)。無論該屬性是對象自身的屬性還是其原型的屬性。 主要知識(shí)點(diǎn):代理和反射的定義、常用的陷阱函數(shù)、可被撤銷的代理、將代理對象作為原型使用、將代理作為類的原型showImg(https://segmentfault.com/img/bVbfWr...

    explorer_ddf 評論0 收藏0
  • 深入理解ES6之《代理和反射》

    摘要:使用陷阱驗(yàn)證屬性用于接收屬性代理的目標(biāo)的對象要寫入的屬性鍵被寫入的屬性的值操作發(fā)生的對象通常是代理屬性必須是數(shù)字拋錯(cuò)用陷阱驗(yàn)證對象結(jié)構(gòu)屬性不存在拋出錯(cuò)誤使用陷阱隱藏已有屬性可以用操作符來檢測給定對象中是否包含有某個(gè)屬性,如果自有屬性或原型屬 使用set陷阱驗(yàn)證屬性 let target = { name: target } let proxy = new Proxy(targe...

    Stardustsky 評論0 收藏0
  • 深入理解ES6之《代理和反射》

    摘要:使用陷阱驗(yàn)證屬性用于接收屬性代理的目標(biāo)的對象要寫入的屬性鍵被寫入的屬性的值操作發(fā)生的對象通常是代理屬性必須是數(shù)字拋錯(cuò)用陷阱驗(yàn)證對象結(jié)構(gòu)屬性不存在拋出錯(cuò)誤使用陷阱隱藏已有屬性可以用操作符來檢測給定對象中是否包含有某個(gè)屬性,如果自有屬性或原型屬 使用set陷阱驗(yàn)證屬性 let target = { name: target } let proxy = new Proxy(targe...

    curried 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<