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

相关推荐

  • 创业黑马300688上市 经营状况分析

      此外公司建立的“黑马会”会员服务虽然实现的收入较少,但其毛利率贡献率(41.71%、50.25%、47.42%)与公关服务毛利率(32.38%、47.35%、48.40%)基本相当。   经综合分析,南方财富网认为,创业黑马在市场利好下,有一定的发展潜力,盈利可观,但建议投资者关注其业务发展及后续募资对营收的连带影响,看看创业黑马能否延续16年高速增长的…

    创业分享 2023-05-22
    121
  • 【资讯】阿里&腾讯角力企业应用市场

    “企业办公软件确实帮了我很大的忙。”在私企工作的小陈谈起一次紧急的工作经历时这样说道。在日常的工作中,企业办公软件帮小陈得到了不少便捷,比如,上午不用等18层电梯在公司楼下就能打卡,下班后在地铁里发工作报告,请假也总是五分钟内通过审批,公司内部跨部门找人首选企业通讯录等等。 早在2009年,阿里巴巴就看到了企业级市场的巨大潜力,并创立了阿里云。阿里云的服务群…

    2023-05-31
    144
  • 巾帼创业展风采 巧手编织创品牌

        刘金萍,女,1970年出生,斗泉乡后山窑村妇女,于2005年发起创办了广灵县巧娘宫手工编织专业合作社。2016年6月,在县妇联的引领和帮助下,企业逐步走入正轨,注册成立了广灵县第一家,也是目前全县唯一的一家以手工编织为主导产业的专业合作社。两年来,合作社积极响应县委精准扶贫的号召,以玉米皮和杞柳为主要原材料的手编工艺品,在优秀的市…

    2023-05-17
    135
  • 2018年全国大学生创业实训营第一期在湖南长沙开营

    为激发大学生创业意识,提升大学生创新精神和创业能力,7月9日,由团中央学校部、全国学联秘书处主办的2018年全国大学生创业实训营(第一期)在湖南长沙成功开营。 团中央学校部副巡视员王良、团湖南省委书记汤立斌、中国青年报副总编辑毛浩、湖南机电职业技术学院党委书记成立平等嘉宾出席开营仪式并讲话。来自全国78所高校的120名营员及相关专家、投资人参加了此次活动。 …

    2023-05-17
    121
  • 悟“太极禅”品“阿里味儿”,看阿里云创学院“创业十二法”如何

    活动期间,在分组“竞速”获得优胜的团队成员,获得了来自阿里云、创头条的奖励礼包。“竞速不仅仅是在课内,课程后还会继续。” 阿里云创学院执行总负责人陶蓉说 围绕“创业十二法”的重点技能,阿里云创学院安排了包括阿里高管、知名专家、大咖投资人等,为学员进行了近身辅导,分享前沿观点和行业经验,拓展学员的认知边界。 历时三天,在太极禅院、阿里总部等地方深入感受“阿里味…

    创业分享 2023-05-13
    129

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

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