码迷,mamicode.com
首页 > 其他好文 > 详细

TZ_02MyBatis_一级缓存和二级缓存

时间:2019-08-06 19:59:10      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:16px   enabled   value   rda   on()   bsp   库存   font   text   

1.Mybatis中的缓存
   1>什么是缓存
        存在于内存中的临时数据。
   2> 为什么使用缓存
        减少和数据库的交互次数,提高执行效率。
   3>什么样的数据能使用缓存,什么样的数据不能使用
        适用于缓存:
            经常查询并且不经常改变的。
            数据的正确与否对最终结果影响不大的。
        不适用于缓存:
            经常改变的数据
            数据的正确与否对最终结果影响很大的。
            例如:商品的库存,银行的汇率,股市的牌价。

2.Mybatis中的一级缓存和二级缓存
      1> 一级缓存:
            它指的是Mybatis中SqlSession对象的缓存。
            当我们执行查询之后,查询的结果会同时存入到SqlSession为我们提供一块区域中。
            该区域的结构是一个Map。当我们再次查询同样的数据,mybatis会先去sqlsession中
            查询是否有,有的话直接拿出来用。
            当SqlSession对象消失时,mybatis的一级缓存也就消失了。
        
        2>二级缓存:
            它指的是Mybatis中SqlSessionFactory对象的缓存。由同一个SqlSessionFactory对象创建的SqlSession共享其缓存
            二级缓存的使用步骤:

 


                第一步:让Mybatis框架支持二级缓存(在SqlMapConfig.xml中配置)

<--默认是true不需要配置-->
<settings>
        <setting name="cacheEnabled" value="true"/>
 </settings>


                第二步:让当前的映射文件支持二级缓存(在IUserDao.xml中配置)

<!--开启user支持二级缓存 -->
    <cache></cache>


                第三步:让当前的操作支持二级缓存(在select标签中配置)

<select id="testCheckById" resultType="user" parameterType="int" useCache="true">

 

Level2Check.java

/**
     * 1.让mybatis支持二级缓存
     * 2.
     */
    @Test
    public void testCheckById() {
        // 获取sessionfactory
        SqlSession session1 = factory.openSession();
        UserDao userDao1 = session1.getMapper(UserDao.class);
        User user1 = userDao1.testCheckById(41);
        System.out.println(user1.toString());
        session1.close();
        
        SqlSession session2 = factory.openSession();
        UserDao userDao2 = session2.getMapper(UserDao.class);
        User user2 = userDao2.testCheckById(41);
        System.out.println(user2.toString());
        session2.close();
        System.out.println(user1 == user2);
    }

 

TZ_02MyBatis_一级缓存和二级缓存

标签:16px   enabled   value   rda   on()   bsp   库存   font   text   

原文地址:https://www.cnblogs.com/asndxj/p/11311144.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!