看懂这篇文章,你就懂了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

相关推荐

  • 精准“滴灌”涵养创新创业生态 让财政资金“四两拨千斤”

    精准“滴灌”涵养创新创业生态(一线视角) 扶持政策不能“大水漫灌”,而要“精准滴灌”,更应让有限的财政资金发挥“四两拨千斤”的杠杆作用、乘数效应 近年来,各地政府出台了不少扶持政策、奖励措施,助力众创空间、孵化器等创新创业载体发展。这些创新创业载体,有效整合了资源、降低了成本,有利于加强对中小企业创新的支持,促进“双创”上水平,打造“双创”升级版。 截至20…

    创业分享 2023-05-13
    67
  • 省教育厅学生处举办创业经验座谈会

      座谈会上,创业代表认为“创想”是创业的特质,有思想,有梦想才能有创业的勇敢,在创业的过程中才能面对创业的孤独、质疑、艰辛,去体验成功的“创享”。   据了解,与会的创业学生已有3个团队或个人利用O2O电子商务经营数码类产品,吉他,生活用品等,另外还有部分大学生创办了文化传媒公司经验,在高校开展服装出租,摄影,会议策划执行等创业项目。来自福建师范大学的李德…

    创业分享 2023-05-20
    68
  • 中国·瘦西湖创客周:点我达谢新宇分享“创业经”

    在目前大众创业,万众创新的大潮之下,全国各地涌现了一些优秀的创业精英。5月16日,“2018中国·瘦西湖创客周·创客精英演讲”专场活动在扬州举行。共邀请了点我达高级副总裁谢新宇、创业邦CEO南立新、联想之星副总裁刘澍霖等5位创业大咖分享了他们的创业经验。 在现场,谢新宇主要从三个关键词出发,分享了他这几年的创业经验。谢新宇是连续成功的90后创业家,现年不满2…

    创业分享 2023-06-02
    84
  • 新疆沙湾县:创业引领促就业 紧扣发展惠民生

    亚心网讯(通讯员 刘雪)近年来,沙湾县坚持以人民为中心,奋力保障和改善民生,加大政策宣传力度,积极落实培训政策,鼓励大学生就业创业的热情和信心,让更多的人实现就业创业,共享改革发展成果。 大学毕业生张若怡因为喜欢收藏文玩、玉石,就选择爱好作为事业,在创业的路上,张若怡通过3年的经验积累,现在经营一家玉石店,店里有新疆和田玉、克拉玛依金丝玉以及各类文玩等,还有…

    创业分享 2023-05-20
    119
  • 东莞:青年创业者齐聚一堂分享创业经验

      为引导和支持更多青年积极投身创业实践,营造良好创新创业氛围,今天下午,市青年创业经验交流大会在东莞理工学院举行,近500名青年创业者齐聚一堂,共谈创业梦想。   创新创业   我市近年来开发1万5千多个见习岗位   会上,我市的青年创业代表分享了自己的创业经历,为青年投身创业实践提供了引导。   大学生创业者 张俊平:“在这个过程中,首先一个最…

    创业分享 2023-05-21
    69

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

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