看懂这篇文章,你就懂了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-06-15
    6400
  • 怎样做一个创业公司的 CEO?

    这种预测值多少钱呢?我认为一家公司 95% 以上来自于你对这个大方向的判断和切入。傅盛战队选了很多项目,也许看起来每个创始人起步不是那么高大上。但选择的都是和传统行业结合比较多的。要么是教育,要么是医疗,要么是 O2O。App 的核心竞争其实基本已 经开 始结束了。 为了这个简单的目标,我们做了整个 自动化 分析。把反病毒那套技术全用上。但对用户来说特别简单…

    创业分享 2023-05-30
    7000
  • 晨征带残雨 在创业路上重新发现自己

      如果说这个时代造就了一批光芒四射的人,那么这些人,其实也在很用心很敬业的去回馈时代的馈赠,可以说,相互铸就成就了彼此,张鸿润就是这批人中的一员,90后中的佼佼者。   张鸿润尤其擅长正能量的策划传播技巧,凭借传媒圈多年的工作经验积累和敏锐天分,在网络新媒体崛起的初期,他再次敏锐的抓住机遇,创造了一系列的燃爆网络的媒体作品。   2013年7月,参与策划的…

    创业分享 2023-05-20
    4400
  • 冀州区搭建服务平台助力青年就业创业

      衡水新闻网-衡水日报讯(樊加伟、韩明)日前,在冀州区和平绿地广场上,人头攒动、气氛热烈,一场由冀州区团委、人社局、扶贫办等相关单位联合举办的“2018年春季就业创业洽谈会”隆重举行,来自全区各行业的160余家招聘企业以及近万名社会就业青年参加了此次人才洽谈会,活动现场提供工作岗位5600余个,达成就业意向6000余人。 (责任编辑:丹微)   2018年…

    创业分享 2023-05-19
    8000
  • 安防企业如何玩转O2O 安居宝这样说

      其三,《国务院关于大力发展电子商务加快培育经济新动力的意见》提出,到2020年,基本建成统一开放、竞争有序、诚信守法、安全可靠的电子商务大市场;   针对管理效率低、人工成本高、车位利用率低、车主投诉多、进出口堵塞等停车管理困局,安居宝在技术关联和衍生上取得了重大突破。基于安居宝云平台,安居宝云停车场除了实现停车场“无人化”自动出入(卡 车牌识别)、无人…

    2023-05-28
    7700

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信