看懂这篇文章,你就懂了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
MybatisPlus数据安全,你掌握了吗
下一篇 2023-05-12 03:19:11

相关推荐

  • 赛维干洗店加盟,创业潜力项目由您挖掘

      赛维干洗店之所以能够保持如今的市场地位,无疑源自于其以诚信经营的优良品质,作为一种企业文化熏陶着每一位赛维员工和加盟商。如果说排行榜只是一个毫无意义的排序,那么排行榜背后透露的信息则是更多。聚焦中国干洗店加盟排行,赛维干洗店新兴创业起点由您挖掘。   赛维干洗店品牌,专业化、国际化、绿色环保新理念。使赛维干洗店品牌不断升值,深入人心,让赛维干洗店在人们心…

    创业分享 2023-05-26
  • 三大股指集体收市创业板指数上涨近3%

    [三大股指集体收盘,创业板指数上涨近3%。请参阅机构的最新市场前景。]今天,A股三大股指收盘,GEM指数趋强,收盘涨近3%。工业部门表现出总体趋势,主题股集体走强,数字货币概念股领涨。该机构表示,市场已经连续两天上扬线,获利效果不断提高,这更有利于结构性市场的解读。科技股不会那么容易死掉,最多只能改变被低估的科技股。这完成了“水流下来”的古老训练。如果您添加…

    2023-05-12
  • 甘肃裕固族绣娘历经苦难不言弃 创业不忘助残扶困

    新华网 2019-10-29   中学毕业的潘小红为了减轻家里的负担,选择打工赚钱。但由于左手的残疾,她四处求职“碰壁”,一次偶然的机会,她受到刺绣手工的启发,开始尝试制作手工艺品。 中国新闻网 新华社 光明网 甘肃陇西妇女不再“谝闲传” 做针线当绣娘腰杆直了 “刚嫁过来的时候,这里妇女们一年四季裹着头巾,除了下地干活,就是攒三聚五靠着墙根‘谝闲传’(当地方…

    创业分享 2023-05-12
  • 当婚外情利器强插入婚姻腹中结果可想而知

    男人出轨多为性,女人出轨多为情。大多数男人并非通过婚外情换老婆,无论作为情感补充,还是单纯寻求感官刺激,最初的想法只是玩玩而已,并不想破坏自己的婚姻家庭。男人出轨初期尚能倍加小心,时间久了就容易忘乎所以,难免会露出蛛丝马迹,一旦出轨暴露就会破坏婚姻基础。既便女人还爱着出轨老公,为了孩子可以原谅,夫妻感情也很难再回到出轨前的甜蜜程度。 婚姻在很大程度上,代表了…

    创业分享 2023-05-13
  • 长春工业大学第二届“互联网+”大学生创新创业大赛评审结束及大

      青年人网讯 近日,长春工业大学第二届“互联网+”大学生创新创业大赛评审答辩会在南湖校区办公楼六楼举行。副校长李占国,教务处、学生工作处、团委、创业教育学院相关负责人出席评审会。学校对本届大赛给予高度重视,聘请了中国国际经济技术合作促进会专业人才发展中心主任董旭等10名社会知名企业经理,以及校内5名专家组成评审专家组。   李占国在讲话中,对各位专家评委的…

    创业分享 2023-05-30

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

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