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

云空间搭建网站/济宁百度推广公司有几家

云空间搭建网站,济宁百度推广公司有几家,小萝做h视频网站,动态网站中如何做项目栏跟Hibernate一样,MyBatis提供了缓存查询(一级缓存和二级缓存)的功能,用于提高数据库性能,减轻数据库压力。 如图: 一级缓存是SqlSession级别的缓存。在我们利用MyBatis操作数据库时,需要构造Sql…

  跟Hibernate一样,MyBatis提供了缓存查询(一级缓存和二级缓存)的功能,用于提高数据库性能,减轻数据库压力。

  如图:

这里写图片描述

  一级缓存是SqlSession级别的缓存。在我们利用MyBatis操作数据库时,需要构造SqlSession对象,在对象中有一个HashMap的数据结构用于存储缓存数据,而且不同的SqlSession之间的缓存数据互不影响。


一级缓存的应用

  下面在代码中试验一下,MyBatis默认已经开启了一级缓存,所以不需要任何配置。这里只贴上测试的code

  实验一

@Test
public void testCache1() throws Exception {SqlSession sqlSession = sqlSessionFactory.openSession();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 查询id为1的用户User user1 = userMapper.selectByPrimaryKey(6);System.out.println(user1.getUsername());// 查询id为1的用户User user2 =userMapper.selectByPrimaryKey(6);System.out.println(user2.getUsername());sqlSession.close();
}

  日志:

这里写图片描述

  由日志中可以看到,当在同一个session中连续查找两条相同的数据时,只执行了一条查询语句。


  **实验二**:
// 测试一级缓存
@Test
public void testCache1() throws Exception {SqlSession sqlSession = sqlSessionFactory.openSession();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 查询id为1的用户User user1 = userMapper.selectByPrimaryKey(6);System.out.println(user1.getUsername());// 更新id为1的用户user1.setUsername("Danny");userMapper.updateByPrimaryKey(user1);sqlSession.commit();// 查询id为1的用户User user2 =userMapper.selectByPrimaryKey(6);System.out.println(user2.getUsername());sqlSession.close();
}

  日志:

这里写图片描述

  这里第二次查询与第一次查询仍然是相同的数据,但在第二次查询之前,先进行了更新操作,于是第二次查询去一级缓存中并没有查到数据,所以转而去数据库中查找数据。


总结

  在上面的实验中,第一次查询到的数据已经被存放在一级缓存中,当再次查询的时候,会先去一级缓存中查找该数据,如果有则直接返回,没有的话才去数据库中查询。而且当SqlSession进行任何增删改的操作(即改变数据)时,会清空一级缓存中的数据,并且由于一级缓存是SqlSession级别的,所以SqlSession关闭后,一级缓存也会被清空。如下图:

这里写图片描述


  MyBatis和Spring整合后,通常将事务控制在service中,此时在service中,方法开始执行时,开启事务,创建SqlSession对象,调用结束时,SqlSession自动关闭。

  在同一个service中可能包含多个mapper的操作,比如:

 userMapper.selectByPrimaryKey(6);//第一次调用mapper方法//……其他业务逻辑userMapper.selectByPrimaryKey(6);//第二次调用mapper方法

  这时在同一个service中查询相同用户信息,就会用到一级缓存,因为方法调用结束,SqlSession就会关闭,一级缓存就会清空。但如果是在两个service中查询相同的用户信息,就不会使用一级缓存了,这时可以使用二级缓存(详见下篇文章)。


【 转载请注明出处——胡玉洋《 【MyBatis框架点滴】——MyBatis一级缓存 》】

http://www.lbrq.cn/news/1326367.html

相关文章:

  • 网站建设项目及费用/搜狗搜索旧版本
  • 用c 做网站在Linux上/知乎怎么申请关键词推广
  • 青海省住房和城乡建设厅网站首页/网站关键词怎么设置
  • 帮公司做网站运营/新闻危机公关
  • 长春seo公司网站/深圳最好的外贸seo培训
  • 无锡网站制作 高端网站定制/成都seo的方法
  • 兖州网站开发/网站推广是什么
  • 网站群建设论文/有什么功能
  • 北京网站设计的公司/旅游新闻热点
  • 湖南网站建设/广告竞价排名
  • 什么网站可以做家禽交易/网站搜索优化公司
  • 做设计兼职网站/外贸网站平台有哪些
  • 成品网站 智能建站/上海关键词优化公司哪家好
  • 北京门户网站开发/深圳网站优化公司
  • 个人建站程序/优化大师官方
  • 网站怎么做付款平台/东莞关键词seo
  • 大型行业网站/seo建站网络公司
  • 建设一个网站预算/站长工具高清吗
  • 网站建设登录注册怎么做/seo网站推广推荐
  • 个人做网站需要多少钱/抖音排名优化
  • 澧县网站建设/厦门头条今日新闻
  • 网站怎么做内部链接/网站建设详细方案
  • 网站建设 英文/潍坊快速网站排名
  • 万网影/快手seo关键词优化
  • 凤楼网站怎么做的/营销页面设计
  • 建站平台哪个最好/驻马店百度seo
  • 重庆市建设工程管理协会网站/天津做优化好的公司
  • 劳动保障局瓯海劳务市场和做网站/seo做的比较牛的公司
  • php网站空间支持/志鸿优化设计官网
  • 成都网站建设116web/免费友情链接网页
  • 【DeepSeek-R1 】分词系统架构解析
  • Windows和Linux的tree工具
  • android MVC/MVP/MVVM/MVI架构发展历程和编写范式
  • SpringBoot与Rust实战指南
  • Hyperbrowser MCP:重新定义网页抓取与浏览器自动化的AI驱动工具
  • 【n8n教程笔记——工作流Workflow】文本课程(第二阶段)——1 理解数据结构 (Understanding the data structure)