MyBatis | Mybatis integrates third-party cache package (EHcache)

table of Contents

 

One, import the jar package

1. Download

2. Guide package

Two, write the chcache.xml file

Three, configure the label in the SQL mapping file

4. Schematic diagram of MyBatis's cache operation (combined with a third-party cache package)


One, import the jar package

1. Download

You need to download the third-party cache package and the adaptation package integrated with MyBatis. You can click here to download the required jar package

2. Guide package

 
13424350-b2e68660a5bbb8b0.png
Figure 1: Imported package

Two, write ehcache.xmldocuments

<?xml version="1.0" encoding="UTF-8" ?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
    <!--
    java.io.tmpdir - Default temp file path 默认的 temp 文件目录
    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都应该有自己的一个缓冲区.
    -->
    <diskStore path="E:\ehcache" />
    <defaultCache maxElementsInMemory="10000" eternal="false"
                  timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"
                  maxElementsOnDisk="10000000" diskPersistent="false"
                  diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" />
</ehcache>

Three, configure the <cache>label in the SQL mapping file

Add in the mapping file:

<cache type="org.mybatis.caches.ehcache.EhcacheCache"/>

If you define one in the mapping file, you can also reference its cache in another mapping file:

<!-- 引用缓存,namespace指定和哪个名称空间下的缓存一样-->
<cache-ref namespace="com.cerr.mybatis.dao.EmployeeMapper"/>

Then you can use ehcache as the second level cache of mybatis before.


4. Schematic diagram of MyBatis's cache operation (combined with a third-party cache package)

 
13424350-f236715fec965002.png
Figure 2: Schematic diagram of cache operation after combining MyBatis with a third-party cache package

Guess you like

Origin blog.csdn.net/qq_14810195/article/details/103523345