看懂这篇文章,你就懂了Mybatis的二级缓存

缓存的概述和分类概述缓存就是一块内存空间.保存临时数据为什么使用缓存将数据源(数据库或者文件)中的数据读取出来存放到缓存中,再次获取的时候 ,直接从缓存中获取,可以减少和数据库交互的次数,这样可以提升程序的性能!缓存的适用情况适用于缓存的:经常查询但不经常修改的(eg: 省市,类别数据),数据的正确与否对最终结果影响不大的不适用缓存的:经常改变的数据 , 敏感数据(例如:股市的牌价,银行的汇率,银行卡里面的钱)等等MyBatis缓存类别一级缓存:它是sqlSession对象的缓存,自带的(不需要配置)不可卸载的(不想使用还不行). 一级缓存的生命周期与sqlSession一致。二级缓存:它是SqlSessionFactory的缓存。只要是同一个SqlSessionFactory创建的SqlSession就共享二级缓存的内容,并且可以操作二级缓存。二级缓存如果要使用的话,需要我们自己手动开启(需要配置的)。二级缓存的使用1.在 mybatis的核心配置文件中开启二级缓存 <!–因为 cacheEnabled 的取值默认就为 true,所以这一步可以省略不配置。为 true 代表开启二级缓存;为 false 代表不开启二级缓存。 –> <settings> <setting name=“cacheEnabled” value=“true”/> </settings>2.在Dao映射文件中配置使用二级缓存<?xml version=”1.0″ encoding=”UTF-8″ ?> <!DOCTYPE mapper PUBLIC “-//mybatis.org//DTD Mapper 3.0//EN” “http://mybatis.org/dtd/mybatis-3-mapper.dtd”> <mapper namespace=“com.itheima.dao.UserDao”> <!–配置二级缓存–> <cache/> <select id=“findAll” resultType=“user”> select * from t_user </select> <delete id=“deleteById” parameterType=“int”> delete from t_user where uid=#{id} </delete> </mapper>3.要进行二级缓存的Pojo类必须实现Serializable接口public class User implements Serializable { private int uid; private String username; private String sex; private Date birthday; private String address; // 省略setter,getter,构造…等方法 }4.测试使用二级缓存测试代码@TestpublicvoidtestFindAll() throwsException

{

// 1.加载mybatis核心配置文件InputStreamis=Resources.getResourceAsStream(“SqlMapConfig.xml”

);

// 2.创建SqlSessionFactoryBuilder对象SqlSessionFactoryBuildersqlSessionFactoryBuilder=newSqlSessionFactoryBuilder

();

// 3.构建SqlSessionFactory对象SqlSessionFactorysqlSessionFactory=sqlSessionFactoryBuilder.build(is

);

// 4.获取SqlSession对象SqlSessionsqlSession=sqlSessionFactory.openSession

();

// 5.获得dao接口的代理对象UserDaouserDao=sqlSession.getMapper(UserDao.class

);

// 6.执行sql语句,得到结果List<User>list=userDao.findAll

();

for (Useruser : list

) {

System.out.println(“user = “+user

);

}

sqlSession.close();//清除一级缓存System.out.println(“分割线———————————-“

);

SqlSessionsqlSession2=sqlSessionFactory.openSession

();

UserDaouserDao2=sqlSession2.getMapper(UserDao.class

);

List<User>userList2=userDao2.findAll

();

for (Useruser : userList2

) {

System.out.println(user

);

}

// 7.释放资源sqlSession2.close

();

}
测试结果:
看懂这篇文章,你就懂了Mybatis的二级缓存
经过上面的测试,我们发现执行了两次查询,并且在执行第一次查询后,我们关闭了一级缓存,再去执行第二次查询时,我们发现并没有对数据库发出 sql 语句,所以此时的数据就只能是来自于我们所说的二级缓存。5.测试关闭二级缓存测试代码@TestpublicvoidtestFindAll() throwsException

{

// 1.加载mybatis核心配置文件InputStreamis=Resources.getResourceAsStream(“SqlMapConfig.xml”

);

// 2.创建SqlSessionFactoryBuilder对象SqlSessionFactoryBuildersqlSessionFactoryBuilder=newSqlSessionFactoryBuilder

();

// 3.构建SqlSessionFactory对象SqlSessionFactorysqlSessionFactory=sqlSessionFactoryBuilder.build(is

);

// 4.获取SqlSession对象SqlSessionsqlSession=sqlSessionFactory.openSession

();

// 5.获得dao接口的代理对象UserDaouserDao=sqlSession.getMapper(UserDao.class

);

// 6.执行sql语句,得到结果List<User>list=userDao.findAll

();

for (Useruser : list

) {

System.out.println(“user = “+user

);

}

sqlSession.close();//清除一级缓存System.out.println(“分割线———————————-“

);

SqlSessionsqlSession2=sqlSessionFactory.openSession

();

UserDaouserDao2=sqlSession2.getMapper(UserDao.class

);

userDao2.deleteById(5);// 关闭二级缓存List<User>userList2=userDao2.findAll

();

for (Useruser : userList2

) {

System.out.println(user

);

}

// 7.释放资源sqlSession2.close

();

}
测试结果
看懂这篇文章,你就懂了Mybatis的二级缓存
经过上面的测试,我们发现执行了两次查询,并且在执行第一次查询后,我们关闭了一级缓存,关闭二级缓存,再去执行第二次查询时,我们发现对数据库发出了 sql 语句,所以此时的数据是来自数据库,不是缓存。总结二级缓存的使用小结:1.开启二级缓存2.dao映射文件配置二级缓存3.要进行二级缓存的Pojo类必须实现Serializable接口4.使用二级缓存:它是SqlSessionFactory的缓存。只要是同一个SqlSessionFactory创建的SqlSession就共享二级缓存的内容5.关闭二级缓存

免责声明:文章内容来自互联网,本站仅作为分享,不对其真实性负责,如有侵权等情况,请与本站联系删除。
转载请注明出处:看懂这篇文章,你就懂了Mybatis的二级缓存 https://www.dachanpin.com/a/cyfx/11427.html

(0)
上一篇 2023-05-12 03:18:05
下一篇 2023-05-12 03:19:11

相关推荐

  • 没有创业经历 就看不到创业痛点

    南方日报:如何看待学习在创新创业中所发挥的作用? 就东莞来看,目前很多产业园缺乏专业的经理人团队,优秀的孵化经理人现在是稀缺的。创业路上有很多坑,很多孵化经理人自己都没有创过业,看不到创业者的痛点所在,没法解决企业发展的核心问题,更别说教创业者在不同阶段及时迈过这些坑。 以色列的成功经验让我们更加坚信,做创业孵化,一定要帮助项目及团队对接更多的资源,进一步细…

    创业分享 2023-05-22
    87
  • 卓创资讯登陆创业板,股价大涨超 73%!

    10 月 19 日,山东卓创资讯股份有限公司(以下简称 ” 卓创资讯 “)登陆创业板,保荐人为民生证券,本次 IPO 的发行价格 29.99 元 / 股,发行市盈率 38.78 倍,截至到发稿时间,最新市值 31 亿元。 卓创资讯作为大宗商品信息服务企业,是专注于大宗商品市场数据监测、交易价格评估及行业数据分析的专业服务提供商。 根据…

    创业分享 2023-05-10
    93
  • 知商金融母公司汇桔网与创业黑马达成战略合作

      在第三届汇桔杯南粤知识产权创新创业大赛总决赛上,知商金融母公司汇桔网与创业黑马正式宣布达成战略合作关系,双方将充分整合各自优势资源,营造融合、共享的创新创业生态环境,推动知商生态体系迈上新台阶。   知商金融兼汇桔网董事长谢旭辉与创业黑马董事长牛文文   大赛现场,知商金融兼汇桔网董事长谢旭辉与创业黑马董事长牛文文共同签署战略合作协议。   广东省知识产…

    创业分享 2023-05-23
    122
  • 草根创业经验分享(二):知己知彼 百战不殆

    编者按:本文为漫索云平台创始人林锐博士在西安电子科技大学的演讲内容整理。同时,林锐博士也是国内知名软件工程专家,著有多部软件工程书籍。 最近几年,随着互联网浪潮的兴起,创业成为热点。但,一将功成万骨枯,我们见到的只是部分能够幸运获得融资、取得业界关注的创业明星,在他们背后,仍有无数创业者默默死去。漫索云平台是林锐博士第二次创业的项目,但在此之前,他也曾经历过…

    创业分享 2023-05-23
    94
  • 横琴新区税务局充分发挥减税降费服务“双创”作用税务专题辅导助力企业创新创业

    本报讯记者廖明山戴丹梅报道:今年以来,横琴新区税务局充分发挥减税降费服务“双创”作用,设立创业专属税务顾问、专业团队入驻创业园区、成立“税务青年助企团”志愿服务队,积极营造创新创业良好氛围,助力粤港澳深度合作示范区建设。 随着政策体系的日益完善和营商环境的加速优化,珠海创新创业环境不断改善,来到珠海的创业者们也有了更多“获得感”。 设立专业税务顾问 推进大众…

    创业分享 2023-05-13
    94

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

工作时间:周一至周五,9:30-16:30,节假日休息