久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

mybatis

 甘甘灰 2018-10-14

高級映射(resultMap返回)

首先
書寫查詢語句

其次
配置resultMap

什么是延遲加載

resultMap可以實(shí)現(xiàn)高級映射(使用association,、collection實(shí)現(xiàn)一對一及一對多映射),,association、collection具備延遲加載的功能
需求:
如果查詢訂單并且關(guān)聯(lián)查詢用戶信息,。如果先查詢訂單信息即可滿足要求,,當(dāng)我們需要查詢用戶信息時再查詢用戶信息。把對用戶信息的按需去查詢就是延遲加載,。
延遲加載:先從單表來查,,再需要時再從關(guān)聯(lián)表去關(guān)聯(lián)查詢,大大提高數(shù)據(jù)庫性能,,因?yàn)椴樵儐伪硪汝P(guān)聯(lián)查詢多張表,,所以速度要快,。

查詢緩存

  • 什么是查詢緩存

mybatis提供查詢緩存,用于減輕數(shù)據(jù)庫的壓力(提高數(shù)據(jù)庫的性能)
mybatis提供一級緩存,、二級緩存

image.png

一級緩存是sqlSession級別的緩存
在操作數(shù)據(jù)庫時需要構(gòu)造sqlSession對象,,在對象中有一個數(shù)據(jù)結(jié)構(gòu)(hashMap)用于存儲緩存數(shù)據(jù)
不同的sqlSession之間的緩存數(shù)據(jù)區(qū)域(hashMap)是互相不影響的
二級緩存是mapper級別的緩存
多個sqlSession去操作同一個mapper的sql語句,多個sqlSession可以共用二級緩存,,二級緩存是跨sqlSession的
為什么要用緩存,?
如果緩存中有數(shù)據(jù)就不用從數(shù)據(jù)庫中獲取,大大提高了系統(tǒng)的性能

一級緩存

  • 根據(jù)id查詢用戶的一級緩存圖解


    image.png

二級緩存

  • 原理


    image.png

首先開啟mybatis二級緩存
sqlSession1去查詢用戶id為1的用戶信息,,查詢到用戶信息會將查詢數(shù)據(jù)存儲到二級緩存中
如果sqlSession3去執(zhí)行相同mapper下sql,,并且執(zhí)行commit提交,清空該mapper下的二級緩存區(qū)域的數(shù)據(jù)
sqlSession2去查詢用戶id為1的用戶信息,,去緩存中找是否存在直接從緩存中取出數(shù)據(jù)
二級緩存與一級緩存區(qū)別,,二級緩存的范圍更大,多個sqlSession可以共享一個UserMapper的二級緩存區(qū)域,。UserMapper有一個二級緩存區(qū)域(按照namespace分),,其他mapper也有自己的二級緩存區(qū)域(按namespace分)
每一個namespace的mapper有一個二級緩存區(qū)域,兩個mapper的namespace如果相同,,這兩個mapper執(zhí)行sql查詢到數(shù)據(jù)將存在相同的二級緩存區(qū)域中

  • 開啟二級緩存

mybatis的二級緩存是mapper范圍級別,,除了在sqlMapConfig.xml中設(shè)置二級緩存開關(guān),還要在具體的mapper.xml中開啟二級緩存

mybatis整合ehcache

ehcache是一個分布式緩存框架

  • 分布緩存

為了提高系統(tǒng)并發(fā),,性能,、一般對系統(tǒng)進(jìn)行分布式部署(集群部署方式)
如果不使用分布式緩存,,緩存的數(shù)據(jù)在各各服務(wù)器單獨(dú)存儲,,不方便開發(fā),所以要使用分布式緩存對緩存數(shù)據(jù)進(jìn)行集中管理
mybatis無法實(shí)現(xiàn)分布式緩存,,需要和其他分布式緩存框架進(jìn)行整合,。

  • 整合方法

mybatis提供了一個cache接口,如果要實(shí)現(xiàn)自己的緩存邏輯,,實(shí)現(xiàn)cache接口開發(fā)即可,。
例如:
mybatis和ehcache整合,mybatis和ehcache整合包中提供了一個cache接口實(shí)現(xiàn)類,。


image.png

默認(rèn)實(shí)現(xiàn)的cache類:


image.png

加入ehcache包

導(dǎo)入jar包或者maven下載jar包
配置


image.png

二級緩存使用場景

對于訪問多的查詢請求且用戶對查詢結(jié)果實(shí)時性要求不高,,此時可采用mybatis二級緩存技術(shù)降低數(shù)據(jù)庫訪問量,提高訪問速度,,業(yè)務(wù)場景比如:耗時較高的統(tǒng)計分析sql,、電話賬單查詢sql等
實(shí)現(xiàn)方法如下:
通過社會之刷新時間,由mybatis每隔一段時間自動清空緩存,,根據(jù)數(shù)據(jù)變化頻率設(shè)置緩存刷新間隔flushInterval,,比如設(shè)置為30分鐘,、60分鐘、24小時等,,根據(jù)需求而定

二級緩存的局限性

mybatis二級緩存對細(xì)粒度的數(shù)據(jù)級別的緩存實(shí)現(xiàn)不好,,比如以下需求:對商品進(jìn)行信息的詳情查詢,每個用戶都有一條二級緩存記錄,,當(dāng)有很多個用戶都訪問了時候,,就會存在很多條記錄,但是當(dāng)進(jìn)行commit時就將所有的記錄全部清空,,下次查詢時繼續(xù)添加到二級緩存,,這樣就造成了細(xì)粒度的數(shù)據(jù)的緩存不好

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多