zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    BZOJ4416 [Shoi2013]阶乘字符串 【序列自动机 + 状压dp】
    BZOJ2159 Crash 的文明世界 【第二类斯特林数 + 树形dp】
    快速求原根
    BZOJ2530 [Poi2011]Party 【贪心】
    BZOJ2213 [Poi2011]Difference 【乱搞】
    BZOJ2276 [Poi2011]Temperature 【单调队列】
    多项式除法
    loj2538 「PKUWC2018」Slay the Spire 【dp】
    loj2537 「PKUWC2018」Minimax 【概率 + 线段树合并】
    Java多线程之线程的暂停
  • 原文地址:https://www.cnblogs.com/NBG-SDL/p/14098075.html
Copyright © 2011-2022 走看看