程序员社区

MyBatis中二级缓存

设置二级缓存

1.显式的开启全局缓存:

   <settings>
      <!--显式的开启全局缓存-->
      <setting name="cacheEnable" value="true"/>
    </settings>

2.在要使用二级缓存的mapper中开启缓存:

<cache/>

也可以自定义参数:

 <!--在当前的Mapper.xml中使用二级缓存-->
    <cache eviction="FIFO"
            flushInterval="60000"
            size="512"
            readOnly="true"/>

演示二级缓存

在没有开启二级缓存时:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kuang.dao.UserMapper">
    <select id="queryUserById" resultType="user">
        select * from user where id=#{id}
    </select>
</mapper>
public class MyTest {
  @Test
  public void test(){
      SqlSession sqlSession = MyBatisUtils.getSqlSession();
      SqlSession sqlSession2 = MyBatisUtils.getSqlSession();

      UserMapper mapper = sqlSession.getMapper(UserMapper.class);
      UserMapper mapper1 = sqlSession2.getMapper(UserMapper.class);

      User user = mapper.queryUserById(1);
      System.out.println(user);
      sqlSession.close();

      User user1 = mapper1.queryUserById(1);
      System.out.println(user1);
      sqlSession2.close();
  }
}

在这里插入图片描述
开启二级缓存以后:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kuang.dao.UserMapper">

    <!--在当前的Mapper.xml中使用二级缓存-->
    <cache
            eviction="FIFO"
            flushInterval="60000"
            size="512"
            readOnly="true"/>

    <select id="queryUserById" resultType="user" useCache="true">
        select * from user where id=#{id}
    </select>
</mapper>
public class MyTest {
    @Test
    public void test(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        SqlSession sqlSession2 = MyBatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        UserMapper mapper1 = sqlSession2.getMapper(UserMapper.class);

        User user = mapper.queryUserById(1);
        System.out.println(user);
        sqlSession.close();

        User user1 = mapper1.queryUserById(1);
        System.out.println(user1);
        sqlSession2.close();
    }
}

MyBatis中二级缓存插图1

赞(0) 打赏
未经允许不得转载:IDEA激活码 » MyBatis中二级缓存

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区