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);
}

最新文章

  1. CSS3 实现3D旋转木马效果
  2. [C++]项目中的代码注释规范(整理)
  3. SqlServer 中如何查看某一个Sql语句是复用了执行计划,还是重新生成了执行计划
  4. Git ~ 添加远程仓库 ~Git
  5. Ubuntu server下安装JDK和Tomcat7
  6. 你需要知道的九大排序算法【Python实现】之冒泡排序
  7. Visual Studio 2015开发Android App问题集锦
  8. UIView的交换实现,子视图交替变换
  9. asp.net JSON(一)
  10. Ubuntu中的.bashrc文件
  11. mysql 4 索引的优缺点
  12. git知识总结-4.git服务器搭建及迁移git仓库
  13. C# [Win32] [API] WS_TABSTOP 無效的解決辦法
  14. python:while循环、运算符、初始编码
  15. iOS逆向之TheOS
  16. CentOS7 虚拟机设置文件共享 VMWareTools安装遇到的坑
  17. not value specified for parameter问题解决方案
  18. LeetCode题解 Permutations II 和 Permutations I ——回溯算法
  19. VS2010配置OpenGL开发环境
  20. Spring 系列教程之默认标签的解析

热门文章

  1. AbstractByteBuf 源码分析
  2. Lua程序设计之字符串精要
  3. [转].NET4.0新特性集合贴
  4. python相关软件安装流程图解————————pycharm安装——————pycharm-professional-2018.3.1
  5. centos7 搭建 php7 + nginx (2)
  6. Android基础控件TextClock和Chronometer的使用
  7. 最棒的7种R语言数据可视化
  8. 引用不了XXservice,怎么办?
  9. &lt;随便写&gt;WIN10家庭版调出策略组
  10. Jmeter性能测试(第三篇)