mybatis3 新增ehcache支援
為了提高MyBatis的效能,有時候我們需要加入快取支援,目前用的比較多的快取莫過於ehcache快取了,ehcache效能強大,而且位各種應用都提供瞭解決方案,在此我們主要是做查詢快取,提高查詢的效率.
在Mybatis的官網上把整合ehcache的文件下載下來看了看,說的太簡單了,對於新手很難理解,而且裡面說的也不是很清楚,經過一番折騰,終於將ehcache加入了.
官網上提供了一個MyBatis-ehcache.jar的包用於整合ehcache快取,文件中還說明需要一個ehcache-core.jar的包,除了這兩個包之外有幾個包也是必須的,官方並沒有說明,以下是需要加入的所有和ehcache相關的包:
1.ehcache-core-2.4.4.jar
2.mybatis-ehcache-1.0.0.jar
3.slf4j-api-1.6.1.jar
4.slf4j-log4j12-1.6.2.jar
除此之外還有mybatis的jar包,log4j,mysql驅動,這些大家應該都知道.
將上述包加入專案之後,新建一個檔名,該檔名必須為ehcache.xml,放在類路徑下面,內容如下
- <?xml version="1.0" encoding="UTF-8"?>
- <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="../bin/ehcache.xsd">
- <!--
- name:Cache的唯一標識
- maxElementsInMemory:記憶體中最大快取物件數
- maxElementsOnDisk:磁碟中最大快取物件數,若是0表示無窮大
- eternal:Element是否永久有效,一但設定了,timeout將不起作用
- overflowToDisk:配置此屬性,當記憶體中Element數量達到maxElementsInMemory時,Ehcache將會Element寫到磁碟中
- timeToIdleSeconds:設定Element在失效前的允許閒置時間。僅當element不是永久有效時使用,可選屬性,預設值是0,也就是可閒置時間無窮大
- timeToLiveSeconds:設定Element在失效前允許存活時間。最大時間介於建立時間和失效時間之間。僅當element不是永久有效時使用,預設是0.,也就是element存活時間無窮大
- diskPersistent:是否快取虛擬機器重啟期資料
- diskExpiryThreadIntervalSeconds:磁碟失效執行緒執行時間間隔,預設是120秒
- diskSpoolBufferSizeMB:這個引數設定DiskStore(磁碟快取)的快取區大小。預設是30MB。每個Cache都應該有自己的一個緩衝區
- memoryStoreEvictionPolicy:當達到maxElementsInMemory限制時,Ehcache將會根據指定的策略去清理記憶體。預設策略是LRU(最近最少使用)。你可以設定為FIFO(先進先出)或是LFU(較少使用)
- 備註: 持久化到硬碟的路徑由虛擬機器引數"java.io.tmpdir"決定. 例如, 在windows中, 會在此路徑下 C:\Documents and Settings\li\Local Settings\Temp 在linux中, 通常會在: /tmp 下 System.out.println(System.getProperty("java.io.tmpdir"));
- -->
- <defaultCache overflowToDisk="true" eternal="false"/>
- <diskStore path="D:/cache" />
- <!--
- <cache name="zzugxy" overflowToDisk="true" eternal="false"
- timeToIdleSeconds="300" timeToLiveSeconds="600" maxElementsInMemory="1000"
- maxElementsOnDisk="10" diskPersistent="true" diskExpiryThreadIntervalSeconds="300"
- diskSpoolBufferSizeMB="100" memoryStoreEvictionPolicy="LRU" />
- -->
- </ehcache>
該檔案是ehcache的配置檔案,上面的註釋已經說得很清楚了,這裡我用的是預設的配置
至此ehcache已經配置好了,然後只需要在你想要快取的mapper配置檔案裡面加入以下內容,該查詢語句得到的結果將會被快取
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.qiuqiu.dao.PersonDao">
- <!-- 以下兩個<cache>標籤二選一,第一個可以輸出日誌,第二個不輸出日誌 -->
- <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
- <!-- <cache type="org.mybatis.caches.ehcache.EhcacheCache"/> -->
- <select id="selectUserById" parameterType="int" resultType="org.qiuqiu.vo.Person">
- select * from person where id=#{id}
- </select>
- </mapper>
這樣就對這個mapper裡面的各種結果進行了快取.程式中不需要修改任何地方.
這個過程不復雜,也沒什麼難度,不過Mybatis的官方說的也太含糊了.附件下面有,需要的各種jar包已經包含
相關文章
- MyBatis3:SQL對映MyBatisS3SQL
- php新增yaml支援PHPYAML
- Ehcache 介紹(3)--Ehcache3 基本使用
- Mysql之新增innodb支援MySql
- mybatis3:Invalid bound statement (not found)MyBatisS3
- ehcache持久化持久化
- OpenShift新增URLRewrite重寫支援
- mybatis3呼叫瀚高procedure報錯MyBatisS3
- MyBatis3教程 - MyBatis Interceptor原始碼分析MyBatisS3原始碼
- Java快取EhcacheJava快取
- Ehcache快取配置快取
- GWT2.2新增canvas元件支援Canvas元件
- DBSync新增對MongoDB、ES的支援MongoDB
- 給iOS庫新增Cocoapods支援iOS
- phpcms--使用新增php原生支援PHP
- phpstorm新增laravle語法支援PHPORM
- 給alias命令新增引數支援
- Android新增OpenCV支援,一步一步新增。AndroidOpenCV
- EhCache快取使用教程快取
- Mybatis 整合 ehcache快取MyBatis快取
- 快取初見——EhCache快取
- spring ehcache報錯Spring
- Netty 框架學習 —— 新增 WebSocket 支援Netty框架Web
- Spring Boot 新增JSP支援【轉】Spring BootJS
- 如何為 Eloquent 新增多語言支援
- 新增MyEclipse WebSphere Portal Server支援(二)EclipseWebServer
- 新增MyEclipse WebSphere Portal Server支援(一)EclipseWebServer
- 為老的vueCli專案新增vite支援VueVite
- WPF|快速新增新手引導功能(支援MVVM)MVVM
- Spring Cache與Ehcache 3整合Spring
- org.springframework.cache.ehcache.EhCacheManagerFactoryBeanSpringFrameworkBean
- SpringBoot-Cache 集合 EhCacheSpring Boot
- 持久層Mybatis3底層原始碼分析,原理解析MyBatisS3原始碼
- Mybatis3原始碼筆記(八)小窺MyBatis-plusMyBatisS3原始碼筆記
- 谷歌為安卓新增主線 Linux 核心支援谷歌安卓Linux
- Excelize 釋出 2.4.1 版本,新增併發安全支援Excelize
- 為七牛iOS SDK新增ALAsset上傳支援iOS
- CLion 2016.1新增Python、Swift支援,並改進了C++支援PythonSwiftC++