




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第11章MyBatis的逆向工程和緩存機制《JavaEE企業(yè)級應用開發(fā)教程(Spring+SpringMVC+MyBatis)》學習目標/Target掌握MyBatis二級緩存機制,能夠在程序中實現二級緩存掌握MyBatis一級緩存機制,并通過程序演示一級緩存的效果了解MyBatis的逆向工程,能夠根據MyBatis官方提供的generatorConfig.xml配置文件在IDEA中實現逆向工程章節(jié)概述/SummaryMyBatis作為一款優(yōu)秀的持久層框架,不僅在數據映射和SQL管理方面表現出色,其逆向工程和緩存機制更是為開發(fā)者提供了極大的便利。逆向工程允許開發(fā)者根據數據庫表結構自動生成對應的實體類及映射文件,極大地簡化了手動編寫煩瑣的映射代碼的過程,提高了開發(fā)效率。MyBatis的緩存機制則通過一級緩存和二級緩存的完美結合,有效減少了數據庫訪問次數,提升了系統(tǒng)性能。本章將對MyBatis的逆向工程和緩存機制進行講解。目錄/Contents11.111.2MyBatis的逆向工程MyBatis的緩存機制MyBatis的逆向工程11.111.1
MyBatis的逆向工程先定一個小目標!
先定一個小目標!了解MyBatis的逆向工程,能夠根據MyBatis官方提供的generatorConfig.xml配置文件在IDEA中實現逆向工程11.1
MyBatis的逆向工程Mybatis提供了一個逆向工程工具,基于這個工具可以根據現有的數據庫表結構自動生成與之對應的Java代碼,這種從數據庫表結構反向生成對應的Java實體類、Mapper接口、XML映射文件的工程化實現通常稱為逆向工程。MyBatisGenerator是MyBatis逆向工程的核心工具之一,它可以根據指定的數據庫連接信息和生成規(guī)則實現MyBatis逆向工程。運行MyBatisGenerator有多種方式,包括但不限于基于命令行、Maven插件、Java代碼等。其中,在Maven構建腳本中集成MyBatisGenerator插件相對比較方便和靈活,可以在構建過程中自動運行MyBatisGenerator,從而自動生成所需的MyBatis相關代碼。下面基于這種方式演示MyBatis逆向工程的實現。11.1
MyBatis的逆向工程1.創(chuàng)建項目和定義配置文件創(chuàng)建一個名稱為chapter11的Maven項目,在項目的pom.xml中引入MyBatisGenerator的Maven插件,為了后續(xù)便于測試,同時引入MyBatis、MySQL連接、單元測試的相關依賴,具體如文件11-1所示。文件11-1pom.xml源代碼11.1
MyBatis的逆向工程1.創(chuàng)建項目和定義配置文件在src/main/resources目錄下創(chuàng)建配置文件generatorConfig.xml,在該配置文件中指定數據庫連接信息、生成代碼的目標目錄、要處理的數據庫表以及生成代碼的具體配置等,具體如文件11-2所示。文件11-2generatorConfig.xml源代碼11.1
MyBatis的逆向工程2.測試效果在IDEA右側單擊Maven的圖標,會彈出Maven的操作界面,在Maven操作界面的Plugins下拉選項中找到mybatis-generator插件,具體如圖所示。11.1
MyBatis的逆向工程2.測試效果雙擊mybatis-generator下的mybatis-generator:generate運行MyBatisGenerator,運行完成后chapter11的項目結構如圖所示。MyBatis的緩存機制11.211.2
MyBatis的緩存機制MyBatis的緩存機制指的是該框架通過內置的緩存系統(tǒng),將相同查詢請求的結果緩存在內存中,以避免重復查詢數據庫,從而提高系統(tǒng)性能的一種機制。當應用程序執(zhí)行查詢時,MyBatis首先檢查是否存在緩存的結果,如果存在,則直接返回緩存結果,否則再向數據庫發(fā)起查詢并將結果緩存起來。這樣,在后續(xù)相同的查詢請求中,就可以直接從緩存中獲取結果,而不必再次訪問數據庫,從而減少了數據庫的負載和提高了系統(tǒng)的響應速度。為了在不同的場景下提供更靈活的緩存策略,MyBatis提供了一級緩存和二級緩存,下面將分別對MyBatis緩存機制中的這兩類緩存進行講解。11.2.1
一級緩存先定一個小目標!
先定一個小目標!掌握MyBatis一級緩存機制,并通過程序演示一級緩存的效果11.2.1
一級緩存MyBatis的一級緩存是在SqlSession級別上進行管理的。它為每個SqlSession提供了一個私有的緩存區(qū)域。當同一個SqlSession對象多次執(zhí)行完全相同的SQL語句時,第一次執(zhí)行完成后,MyBatis會將查詢結果寫入一級緩存中。在接下來的查詢中,如果程序沒有執(zhí)行插入、更新或刪除操作,且沒有清除緩存的操作,那么MyBatis將會直接從一級緩存中獲取數據,而無需再次查詢數據庫,從而提高了查詢效率。由于MyBatis的一級緩存是與SqlSession相關聯的,如果在一個SqlSession中執(zhí)行了插入、更新、刪除操作,或者在SqlSession關閉時,MyBatis會將一級緩存中的數據清除,以確保后續(xù)查詢能夠獲取到最新的數據。11.2.1
一級緩存1.創(chuàng)建核心配置文件在項目的src/main/resources目錄下創(chuàng)建一個名稱為mybatis-config.xml的文件作為MyBatis的核心配置文件,在mybatis-config.xml配置文件中配置日志記錄實現、數據庫連接信息、映射器的相關信息,如文件11-3所示。文件11-3mybatis-config.xml源代碼MyBatis的一級緩存是默認開啟的,無需進行任何顯式配置。下面基于11.1節(jié)中逆向工程生成的代碼演示一級緩存的效果。11.2.1
一級緩存2.創(chuàng)建測試類在項目的src/test/java目錄下創(chuàng)建測試類CacheTest,在該類中定義測試方法L1CacheTest(),在測試方法中通過SqlSession對象獲取BookMapper對象,并使用BookMapper對象連續(xù)兩次調用其selectByPrimaryKey()方法查詢圖書信息,其中查詢圖書信息的id一樣,具體如文件11-4所示。文件11-4CacheTest.java源代碼11.2.1
一級緩存3.測試效果運行文件11-4中的L1CacheTest()方法,運行效果如下圖所示。11.2.1
一級緩存3.測試效果下面在查詢圖書信息后,執(zhí)行刪除圖書信息,接著再查詢圖書信息,測試這種情況的效果。在文件11-4的第37~38行中間添加刪除圖書信息的代碼,具體如下。//刪除圖書信息mapper.deleteByPrimaryKey(6);mit();11.2.1
一級緩存3.測試效果再次執(zhí)行L1CacheTest()方法,效果如下圖所示。11.2.2
二級緩存先定一個小目標!
先定一個小目標!掌握MyBatis二級緩存機制,能夠在程序中實現二級緩存11.2.2
二級緩存默認情況下,MyBatis中每個SqlSession都會擁有獨立的一級緩存,即使執(zhí)行相同的查詢語句,不同的SqlSession之間也不會共享緩存。這就導致了在不同的SqlSession中執(zhí)行相同的查詢時,可能都會向數據庫發(fā)送查詢請求,降低了查詢效率。對此,如果想要多個SqlSession之間共享查詢結果,減少對數據庫的重復查詢可以使用MyBatis的二級緩存。11.2.2
二級緩存MyBatis二級緩存是SqlSessionFactory級別的緩存,同一SqlSessionFactory創(chuàng)建的SqlSession之間,其緩存是共享的,MyBatis基于映射器的命名空間來區(qū)分不同的二級緩存,每個命名空間下的查詢結果會被獨立緩存,互不影響。如果多個SqlSession對象使用同一個Mapper的相同查詢語句去操作數據庫,在第一個SqlSession對象執(zhí)行完后,MyBatis會將查詢結果寫入二級緩存,此后,如果程序沒有執(zhí)行插入、更新、刪除操作,當第二個SqlSession對象執(zhí)行相同的查詢語句時,MyBatis會直接讀取二級緩存中的數據。這樣的設計可以讓不同的業(yè)務模塊擁有各自的緩存區(qū)域,避免數據交叉污染。11.2.2
二級緩存開啟二級緩存的全局配置開啟當前Mapper的命名空間下的二級緩存開啟二級緩存要完成的步驟11.2.2
二級緩存使用二級緩存前,需要在MyBatis的核心配置mybatis-config.xml文件中通過<settings>標簽開啟二級緩存的全局配置,具體代碼如下所示。1.開啟二級緩存的全局配置<!—開啟二級緩存--><settings> <settingname="cacheEnabled"value="true"/></settings>11.2.2
二級緩存開啟當前Mapper的命名空間下的二級緩存,可以通過MyBatis映射文件中的<cache>標簽來完成,在<mapper>標簽下添加如下代碼。2.開啟當前Mapper的命名空間下的二級緩存<!—開啟當前Mapper的命名空間下的二級緩存--><cache></cache>11.2.2
二級緩存<cache>標簽的屬性屬性說明type用于指定緩存實現類的全限定類名,可以自定義緩存實現類,不指定時使用MyBatis的默認緩存實現類org.apache.ibatis.cache.impl.PerpetualCacheeviction用于指定緩存的淘汰策略,即當緩存容量達到一定閾值時,如何決定移除哪些緩存項。該屬性有如下可選值。LRU:最近最少使用的策略,移除最長時間不被使用的對象。FIFO:先進先出策略,按對象進入緩存的順序來移除它們。SOFT:軟引用策略,移除基于垃圾回收器狀態(tài)和軟引用規(guī)則的對象WEAK:弱引用策略,更積極地移除基于垃圾收集器狀態(tài)和弱引用規(guī)則的對象。NONE:無淘汰策略,緩存大小無限制11.2.2
二級緩存屬性說明flushInterval用于指定緩存的刷新間隔(單位:毫秒)。當達到指定的時間間隔后,MyBatis會清空整個緩存,觸發(fā)新的查詢請求時會重新加載數據size用于指定緩存的最大容量(單位:條目數量)。當緩存項數量達到指定閾值時,根據eviction屬性指定的策略淘汰舊的緩存項readOnly用于指定緩存是否為只讀。該屬性可以被設置為true或者false。當緩存設置為只讀時,緩存對象不能被修改,但此時緩存性能較高。當緩存設置為可讀寫時,性能較低,但安全性高11.2.2
二級緩存1.開啟二級緩存在文件11-3的mybatis-config.xml文件中的<settings>標簽下添加開啟二級緩存的全局配置。接下來通過案例演示MyBatis二級緩存的應用,該案例根據id查詢圖書信息。<settingname="cacheEnabled"value="true"/>在BookMapper.xml映射文件的<mapper>標簽中開啟當前Mapper的二級緩存。<cache></cache>11.2.2
二級緩存2.定義測試方法在文件11-4的CacheTest類中定義測試方法L2CacheTest(),在該方法中創(chuàng)建2個SqlSession對象,使用這兩個對象獲取不同的BookMapper對象,并基于BookMapper對象查詢相同id的圖書信息,具體如下所示。L2CacheTest()方法源代碼11.2.2
二級緩存3.測試效果運行L2CacheTest()方法,運行效果如下圖所示。11.2.2
二級緩存3.測試效果下面測試查詢過程中執(zhí)行了刪除操作后的查詢效果。修改L2CacheTest()方法,在方法中創(chuàng)建3個SqlSession對象,基于第一個SqlSession對象查找圖書id為1的圖書,接著基于第二個SqlSession對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新能源公交站臺信息指示標志牌整體解決方案合同
- 2025年生態(tài)中藥材種子繁育與國內連鎖藥店采購合同
- 2025年度企業(yè)間網絡數據安全保密合作框架協議
- 2025年長途貨車租賃違約行為評估與處理規(guī)范合同
- 2025醫(yī)療過錯賠償協議書編制技巧與經典案例深度解讀
- 2025綜合性醫(yī)院安全照明與疏散指示系統(tǒng)升級改造服務合同
- 2025年國際物流行業(yè)高峰論壇參展商招募及綜合服務合同
- 2025年傳統(tǒng)村落改造工程勞務分包服務協議范本
- 2025年高新技術企業(yè)資質共享及產業(yè)協同發(fā)展合作協議
- 2025年航空電子設備EMC測試工程師專業(yè)聘用協議
- 居家養(yǎng)老服務創(chuàng)新創(chuàng)業(yè)項目計劃書
- 家具行業(yè)常用中英文對照
- 英語四六級詞匯匯總(帶音標+免費下載)
- 插板機安全操作規(guī)程
- 銘復樂IV期臨床方案介紹
- GB/T 14153-1993硬質塑料落錘沖擊試驗方法通則
- 并購貸款業(yè)務培訓
- 北京大學人民醫(yī)院-醫(yī)療知情同意書匯編
- 建設集團有限公司安全生產管理制度匯編
- 牙體牙髓病最全課件
- 交通信號控制系統(tǒng)檢驗批質量驗收記錄表
評論
0/150
提交評論