MyBatis 缓存及其作用域
创始人
2024-01-28 22:31:26
0

MyBatis 缓存及其作用域

一级缓存:

作用域在一个SqlSession中(可能有多个或者一个sql执行)

在同一个会话中执行sql语句时会先在一级缓存中查找这个sql是否被执行且存储过执行结果,若有则直接返回,若无则查询数据库。

存储方式是:HashMap、key 为 hashCode+sqlId+Sql 语句。value 为 从查询出来映射生成的 java 对象

默认开启一级缓存

会话期间如果有除查询外的其他sql语句提交后会直接清空缓存、会话结束也会清空缓存。

一个sqlSession过程:

@Testpublic void test(){//第一步:获得SqlSession对象SqlSession sqlSession = MybatisUtils.getSqlSession();// 方式一:getMapperUserDao mapper = sqlSession.getMapper(UserDao.class);// 调用我们编写的接口方法List userList = mapper.getUserList();for (User user : userList) {System.out.println(user);}// 关闭流对象sqlSession.close();}

二级缓存

​ Mybatis的二级缓存是指mapper映射文件(或者说是一个接口文件,Mapper文件相对于接口文件的实现)。二级缓存的作用域是同一个nameSpace下的mapper映射文件内容,多个SqlSession共享。

​ 不同 的 sqlSession 两次执行相同 namespace 下的 sql 语句且向 sql 中传递参数也相同即最终执行 相同的 sql 语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从 缓存中获取数据将不再从数据库查询,从而提高查询效率。Mybatis 默认没有开启二级缓存 需要在 setting 全局参数中配置开启二级缓存。

查询的顺序: 二级缓存 => 一级缓存 => 数据库

只能在一个命名空间下使用二级缓存

  • 由于二级缓存中的数据是基于namespace的,即不同namespace中的数据互不干扰。在多个namespace中若均存在对同一个表的操作,那么这多个namespace中的数据可能就会出现不一致现象。

在单表上使用二级缓存

如果一个表与其它表有关联关系,那么久非常有可能存在多个namespace对同一数据的操作。而不同namespace中的数据互补干扰,所以就有可能出现多个namespace中的数据不一致现象。
查询多于修改时使用二级缓存

在查询操作远远多于增删改操作的情况下可以使用二级缓存。因为任何增删改操作都将刷新二级缓存,对二级缓存的频繁刷新将降低系统性能。

MyBatis面试:
https://blog.csdn.net/javalingyu/article/details/124739040

相关内容

热门资讯

在合肥创业推荐项目 在合肥创业...   :个性服装印制店现在转印和电脑技术加在一起已经将应用领域无限扩展了,可以应用于空白文化衫、牛仔、...
2018年 2018年年度报告... 2粗粮早餐现代人越来越注意饮食健康,小本生意你可以从粗粮早餐下手。像玉米棒、烤红薯、煎饼、烧麦包子、...
最适小本生意创业的项目合年轻人... 个性化小礼品这种风靡欧美的个人图片保存新模式,已经从欧美展开,于去年9月份,个性化小礼品悄然进军中国...
2018适合在农乡镇小本创业致... 农村乡镇创业项目:科技书店现在的农村大都搞多种经营,农民们也广寻致富门路。通俗易懂的农村科技致富书籍...
乡镇小本创业致富项目 乡镇小本... 做什么小生意比较好赚钱?如今市面上的小本创业项目如雨后春笋般快速发展,如果你真的想要做点小生意赚钱。...
2017年农村致富金点子 20... 县城虽小却是一个地区的经济中心,周边生活的老百姓都要通过县城满足自己的日常生活需求。2017年被称为...
农村六个创业项目 最适合农村的... 洗一套衣服只需2元左右的成本,收费10元,翻新、清洗一件皮衣成本1-2元,收50-80元,日收活在5...
亳州炒货机小本创业首选项目 亳... 炒货机亳州炒货机,宿州炒货机小本创业首选项目致诚机械板栗机厂专业生产、批发、供应、销售各款炒板栗机器...
市场空亳州炒货机小本创业首选项... 创业俨然成为了当今社会致富的主要途径,而创业的风险又是让很多投资者忌惮。为了降低风险又不至于错过这个...
成都女人做什么创业项目比较好推... 成都女人做什么创业项目比较好推荐对于一个普通创业者来说,在选择项目的时候,一定要考虑自己的兴趣所在。...