当前位置: 首页 > wzjs >正文

企业网站建设规划书个人网页设计模板图片手机版

企业网站建设规划书,个人网页设计模板图片手机版,怎么做网站域名指向,携程电子商务网站建设专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…

专栏精选

引入Mybatis

Mybatis的快速入门

Mybatis的增删改查扩展功能说明

mapper映射的参数和结果

Mybatis复杂类型的结果映射

Mybatis基于注解的结果映射

Mybatis枚举类型处理和类型处理器

再谈动态SQL

Mybatis配置入门

Mybatis行为配置之Ⅰ—缓存

Mybatis行为配置之Ⅱ—结果相关配置项说明

Mybatis行为配置之Ⅲ—其他行为配置项说明

Mybatis行为配置之Ⅳ—日志

Mybatis整合Spring详解

Mybatis插件入门

Mybatis专栏代码资源

文章目录

  • 专栏精选
  • 摘要
  • 引言
  • 正文
    • 缓存配置项说明
      • cacheEnabled
      • localCacheScope
    • 一级缓存
    • 二级缓存
  • 总结

摘要

在这篇文章中,我们将进入Mybatis行为配置的世界,了解Mybatis一二级缓存的基本方法,其中的很多观点或内容都能在一定程度上让我们的开发之旅更加轻松方便,这是一个菜鸟提升技术能力,老鸟巩固基础知识的好机会。准备好开启今天的神奇之旅了吗?

引言

大家好,我是奇迹老李,一个专注于分享开发经验和基础教程的博主。欢迎来到我的频道,这里汇聚了汇集编程技巧、代码示例和技术教程,欢迎广大朋友们点赞评论提出意见,重要的是点击关注喔 🙆,期待在这里与你共同度过美好的时光🕹️。今天要和大家分享的内容是Mybatis行为配置之缓存。做好准备,Let’s go🚎🚀

正文

首图

在Mybatis 的配置文件中 <setting>标签用于配置Mybatis项目执行过程中的行为,这些行为配置项每一个都对应 Configuration类中的一个属性, Configuration类也为这些属性提供了setter方法,除了使用配置文件之外,我们还可以通过调用这些方法来完成相应的配置。当然,这些行为配置项Mybatis大都有默认的配置,默认配置在Mybatis的源码中 org.apache.ibatis.builder.xml.XMLConfigBuilder类的 settingsElement方法中定义,可自行查看

缓存配置项说明

cacheEnabled

备注:是否开启二级缓存
默认值:true
建议值:false
建议原因:
mybatis缓存包括一级缓存和二级缓存,一级缓存是不能关闭的(可以通过配置修改作用域),二级缓存可以通过此配置关闭。关于一二级缓存的详细内容,见[[Mybatis缓存]]
在集群/微服务环境下,其他服务修改了同一个文件对当前微服务是不可见的,在这种情况下,数据库里的真实数据已经更新了,但当前服务的缓存仍然在生效中,会读取到脏数据。

localCacheScope

备注:设置一级缓存作用域
默认值:SESSION
建议值:STATEMENT
建议原因:微服务环境下可以防止读取到脏数据。

下面介绍一二级缓存的详细说明

一级缓存

mybatis的一级缓存提供SqlSession级别的查询结果缓存,也就是说在同一个SqlSession中,如果没有进行过增删改操作,相同条件的sql查询会通过一级缓存查询结果,而不用反复通过数据库执行sql。

一级缓存是全局开启的,只能通过localCacheScope这个配置修改一级缓存的作用域,可选的配置包括:

可选项是否默认值说明
SESSIONyes缓存作用在session级别,同一个SqlSession中共享
STATEMENTno缓存作用在一个查询级别

可以通过在一个sqlSession中反复进行同一个查询的方式验证一级缓存。

测试代码如下:

public class EnvConfigTest {  private SqlSessionFactory sqlSessionFactory;  @Before  public void before() {  try (InputStream input = EnvConfigTest.class.getResourceAsStream("/mybatis-config.xml")) {  SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();  sqlSessionFactory = builder.build(input);  } catch (IOException e) {  throw new RuntimeException(e);  }  }@Test  public void testSessionCache(){  SqlSession session = this.sqlSessionFactory.openSession();  ApplicationRepository mapper = session.getMapper(ApplicationRepository.class);  AppTestEntity e1 = mapper.queryById(2L);  AppTestEntity e2 = mapper.queryById(2L);  System.out.println("boolean(e1=e2) is "+(e1==e2));  session.close();  }
}

设置<setting name="localCacheScope" value="SESSION"/>时的打印结果为:

boolean(e1=e2) is true

设置<setting name="localCacheScope" value="STATEMENT"/> 时的打印结果为:

boolean(e1=e2) is false

可以看出,STATEMENT作用域的作用范围就是一次sql查询,也就时变相的关闭了Mybatis的一级缓存。而SESSION作用域会在同一个 sqlSession内部共享查询结果。

刷新一级缓存的方法有两种

  1. 在两次查询之间进行一次增删改操作
  2. 通过 SqlSession#clearCache 方法清空缓存

测试清空缓存

    @Test  public void testSessionCache(){  SqlSession session = this.sqlSessionFactory.openSession();  ApplicationRepository mapper = session.getMapper(ApplicationRepository.class);  AppTestEntity e1 = mapper.queryById(2L);  session.clearCache();  AppTestEntity e2 = mapper.queryById(2L);  System.out.println("boolean(e1=e2) is "+(e1==e2));  session.close();  }

配置<setting name="localCacheScope" value="SESSION"/>时的打印结果为:

boolean(e1=e2) is false

二级缓存

Mybatis的二级缓存可是实现在多个SqlSession中共享,默认是开启的,可以通过 <setting name="cacheEnabled" value="false"/>这个配置项关闭。二级缓存的作用域是一个namespace,即mapper映射文件中的namespace。

可以通过在两个 SqlSession 中查询同一内容的方式验证二级缓存是否生效。测试代码为:

public class EnvConfigTest {  private SqlSessionFactory sqlSessionFactory;//省略@Before@Test  public void testCacheFirst() {  SqlSession session1 = this.sqlSessionFactory.openSession();  ApplicationRepository mapper1 = session1.getMapper(ApplicationRepository.class);  SqlSession session2 = this.sqlSessionFactory.openSession();  ApplicationRepository mapper2 = session2.getMapper(ApplicationRepository.class);  System.out.println("==session1查询==");  AppTestEntity e1 = mapper1.queryById(1L);  //提交事务,使二级缓存生效session1.commit();  System.out.println("==session2查询==");  AppTestEntity e2 = mapper2.queryById(1L);  System.out.println("boolean(session1_e1=session2_e2) is "+(e1==e2));  session1.close();  session2.close();  }
}

配置 <setting name="cacheEnabled" value="false"/>时的效果

==session1查询==
==session2查询==
boolean(session1_e1=session2_e2) is false

配置 <setting name="cacheEnabled" value="true"/>或不配置时的效果

==session1查询==
==session2查询==
boolean(session1_e1=session2_e2) is true

这里需要注意一点,要使二级缓存生效,需要在查询条件后提交事务(或者通过框架控制事务执行,如Spring中的@Transicational注解),如果没有提交事务也不会走二级缓存。如果注释掉测试代码中的 session1.commit();一行,打印结果为:

==session1查询==
==session2查询==
boolean(session1_e1=session2_e2) is false

总结

在这片文章中我们介绍了Mybatis中缓存的配置,以及如何确定一个查询是否走了缓存。Mybatis的缓存分为一级缓存和二级缓存,一二级缓存都是默认开启的,其中二级缓存可以通过配置关闭,而一级缓存是不能关闭的,只能通过配置修改一级缓存的作用域。


📩 联系方式
邮箱:qijilaoli@foxmail.com

❗版权声明
本文为原创文章,版权归作者所有。未经许可,禁止转载。更多内容请访问奇迹老李的博客首页


文章转载自:

http://7lvJjg8l.jbnss.cn
http://ksoyjDry.jbnss.cn
http://0svXnesi.jbnss.cn
http://yGzmnMl3.jbnss.cn
http://5Eh6zS5G.jbnss.cn
http://XovwJJWn.jbnss.cn
http://BYCGWbNf.jbnss.cn
http://TsZKm5Kw.jbnss.cn
http://Wyx5qgY5.jbnss.cn
http://STWSfiKG.jbnss.cn
http://ogLv8ndx.jbnss.cn
http://0fqe2wkx.jbnss.cn
http://jqvBnRVo.jbnss.cn
http://CgmGiMC1.jbnss.cn
http://Jixn8NPj.jbnss.cn
http://3MXlSNnX.jbnss.cn
http://4j1QAKgz.jbnss.cn
http://YSYuqDG6.jbnss.cn
http://U1ZPrszt.jbnss.cn
http://0r00p7F0.jbnss.cn
http://m1LpUxpq.jbnss.cn
http://kGNbIjZW.jbnss.cn
http://1CmZ6JjC.jbnss.cn
http://Pj9EPPID.jbnss.cn
http://G2RqNP0b.jbnss.cn
http://bLhwQe6l.jbnss.cn
http://yK39oaX9.jbnss.cn
http://UDTzVi7l.jbnss.cn
http://IPJAfeLB.jbnss.cn
http://r6xLeMyQ.jbnss.cn
http://www.dtcms.com/wzjs/633841.html

相关文章:

  • 物流网站室内装修设计师怎么样
  • 中国的网站建设数据分析网站优化网站建设
  • 个人主体可以做网站吗h5制作报价细则
  • 免费个人网站 上传个人简历免费模板下载
  • 网站建设的上市公司做网站买什么服务器 便宜
  • 网站上常用字体wordpress app 加载慢
  • 单位网站建设自查报告范文网页设计规划书样本
  • 福州营销网站建设团队网页制作常用软件
  • 韩国优秀网站设计中天建设集团有限公司总部在哪里
  • 做微信封面模板下载网站企业做网站的费用计入什么科目
  • 佛山seo网站优化免费推广平台大全
  • 做类似淘宝一样的网站营口网站seo
  • wordpress存储镜像seo经理招聘
  • 网站怎么做mip技术贵德县公司网站建设
  • 网站建设前期规划方案双流网站建设
  • .net mvc做网站网站开发招标任务书
  • 郑州建站的公司需要一个简单的网站
  • 亚马逊网站建设与维护方法分析如何宣传推广自己的产品
  • 江苏城乡建设职业学院网站东莞企业建站平台
  • 评析网站建设报价单网络广告投放公司
  • 行业网站网址给wordpress首页添加公告栏
  • 网站页面好了怎么做后端中国建设监理协会化工监理分会网站
  • 做钢材都有什么网站永嘉专业网站设计公司
  • 班级响应式网站html格式谁的网站模板利于优化
  • 河南宏业建设管理有限公司网站服装花型图案设计网站
  • 秦皇岛做网站优化公司wordpress微信h5登录
  • 泰安微信网站建设郑州做网站的多不多
  • 网站如何申请做网站一定要购买虚拟主机吗
  • 速成网站怎么做网页制作与设计命令
  • 游戏门户网站 织梦网站公司建设