看懂这篇文章,你就懂了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-20
    95
  • 牛!这位90曾被黑中介骗 现成就创业佳话

      “希望做成中国最大的人才数据储备平台、就业服务平台、劳务共享平台,覆盖中国10%兼职人口。”对未来,王锐旭有着明确的方向。   由于家境困难,王锐旭大一就开始在社会上找兼职,他曾花250元在某中介公司办了会员卡,“说是负责在未来4年介绍兼职,可是交了钱就没了下文。后来才知道这是诈骗公司。”不少人上当受骗后可能会自怨自艾,而王锐旭却看到了其中的商机,他公司…

    创业分享 2023-05-27
    53
  • 2018年赢在东莞科技创新创业大赛北京赛区决赛圆满落幕

    8月22日,2018年赢在东莞科技创新创业大赛北京赛区决赛圆满落下帷幕,北京大艾机器人科技有限公司的外骨骼机器人项目夺得了北京赛区一等奖,拿到了进军东莞总决赛争夺100万奖金的门票。 国家发展和改革委员会中国投资协会新兴产业中心常务副主任王涛,清华校友总会研究部主任,清华校友三创大赛组委会副主任、秘书长梅晓鹏,东莞市科学技术局高新技术发展及产业化科科长钟靖平…

    创业分享 2023-05-16
    97
  • 洪雅县“雅连”品牌创业展示获好评

    洪雅县“雅连”品牌创业展示获好评 手机看新闻:进入四川手机报 短信看新闻:订阅四川特快 四川发布网站 四川新闻网眉山10月10日讯(姜伟 文/图) 昨(9)日,以“智汇天府,创赢未来”为主题的四川省首届创业博览会在成都举办,经层层筛选,洪雅县瓦屋山药业有限公司脱颖而出,代表眉山参加成都平原经济区创业成果展示。 该企业是中国中药协会中药饮片专业委员会理事单位,…

    2023-05-15
    74
  • “药给力”倒闭启示录:创业团队谨记!!不要轻信投资协议 钱不到账的VC是耍流氓

      提到“破斧成舟”这个词,很多人已可能从各种文章中听过一百遍,但是破斧成舟的口头契约很多创始人都有,但是真正在带领项目往前跑的时候大多数人都迷失了,公司无论在诞生或者是早期发展阶段,总会碰到很多的成长壁垒。   其实这个背后代表了你性格的气质,如今年遇到资本寒冬,我们见到的LP投资者,可能从原来只用见10个,到今天为止我们需要见到100个,我们的BP调整了…

    创业分享 2023-05-31
    77

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信