mybatis缓存

三:

  一:cache,mybatis将某些数据保存于内存中;

  二:一级缓存;二级缓存;

  三:提高系统的性能(前提:缓存的命中率要高,如果低,就没有意义);

一级缓存:

  一:本地缓存;

  二:在参数和sql完全一样的情况下,SqlSession不会每次都发送sql到数据库查询数据,浪费资源,于是在没有声明需要刷新的情况下,mybatis会在第一次执行sql时,将查询到的数据保存在内存中,以备二次使用;(如果N次需要查询的结果都是一样,那就可以将数据保存在内存中,以备使用,N:可以是两次或者多次,不是固定的,是相对的,相对于用和不用所带来的性能影响;故兵无常势,水无常形;能因敌变化而取胜者,谓之神);

  三:所有的增删改都不缓存;相对于同一个SqlSession的缓存而已;

二级缓存:

  一:全局缓存;

  二:基于namespace级别的缓存,一个名称空间,对应一个二级缓存;一个会话查询一条数据,该数据会被放到一级缓存中,但是当该缓存关闭时,我们还需要数据,于是将一级缓存的数据保存到二级缓存中。

  三:新的会话查询信息也可以从二级缓存中得到;不同的mapper查询出来的数据保存在对应的缓存(map)中;

开启缓存方式:

  一:

<?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.nbg.dao.UserMapper">
    <cache
            eviction="FIFO"
            flushInterval="60000"
            size="512"
            readOnly="true"/>
</mapper>

  二:

<settings>
    <setting name="cacheEnabled" value="true"/>
</settings>

  三:

<select id="getUserById" resultType="User" useCache="true">/select>

 自定义缓存:eacache;

原文地址:https://www.cnblogs.com/NBG-SDL/p/14098075.html