码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MyBatis的二级缓存


    MyBatis的二级缓存

    • 二级缓存是SqlSessionFactory级别,通过同一个SqlSessionFactory创建的SqlSession查询的结果会被缓存;此后若再次执行相同的查询语句,结果就会从缓存中获取。

    二级缓存开启的条件:

    • 1.在核心配置文件中,设置全局配置属性cacheEnabled="true",默认为true,不需要设置
    • 2.在映射文件中设置标签
    • 3.二级缓存必须在SqlSession关闭或提交之后有效
    • 4.查询的数据所转换的实体类类型必须实现序列化的接口

    使二级缓存失效的情况:

    • 两次查询之间执行了任意的增删改,会使一级和二级缓存同时失效

    CacheMapper接口

    1. public interface CacheMapper {
    2. /**
    3. * 根据员工id查询员工信息
    4. * @return
    5. */
    6. Emp getEmpById(@Param("empId") Integer empId);
    7. }

    MyBatis的映射文件CacheMapper.xml

    1. "1.0" encoding="UTF-8" ?>
    2. mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="com.atguigu.mybatis.mapper.CacheMapper">
    6. <cache/>
    7. <select id="getEmpById" resultType="Emp">
    8. select * from t_emp where emp_id = #{empId}
    9. select>
    10. mapper>

    测试

    1. public class CacheMapperTest {
    2. @Test
    3. public void testCache() throws IOException {
    4. InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    5. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
    6. SqlSession sqlSession1 = sqlSessionFactory.openSession(true);
    7. CacheMapper mapper1 = sqlSession1.getMapper(CacheMapper.class);
    8. Emp emp1 = mapper1.getEmpById(1);
    9. System.out.println(emp1);
    10. sqlSession1.close();
    11. SqlSession sqlSession2 = sqlSessionFactory.openSession(true);
    12. CacheMapper mapper2 = sqlSession2.getMapper(CacheMapper.class);
    13. Emp emp2 = mapper2.getEmpById(1);
    14. System.out.println(emp2);
    15. sqlSession2.close();
    16. }
    17. }

  • 相关阅读:
    Docker-nginx简单实用(启动停止)
    第一章《初学者问题大集合》第2节:学会编程就可以成为软件工程师吗
    2022 年 JavaScript 开发工具的生态,别再用过时的框架了
    【RabbitMQ】介绍及消息收发流程
    VSCode中配置命令行参数
    Vue常见面试题,如何修改滚动条样式(谷歌浏览器)
    HTML5期末大作业:旅游网页设计与实现——旅游风景区网站HTML+CSS (1)
    乱飞的悟空,看我程咬金天罡3斧
    厉害了!阿里内部都用的Spring+MyBatis源码手册,实战理论两不误
    Spring Security—Spring MVC 整合
  • 原文地址:https://blog.csdn.net/weixin_52385232/article/details/127656710
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号