广告
返回顶部
首页 > 资讯 > 精选 >使用mybatis如何实现查询缓存
  • 832
分享到

使用mybatis如何实现查询缓存

mybatis查询缓存 2023-05-31 15:05:12 832人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关使用mybatis如何实现查询缓存,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1 缓存的意义将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上

这篇文章将为大家详细讲解有关使用mybatis如何实现查询缓存,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1 缓存的意义

将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。

使用mybatis如何实现查询缓存

2 mybatis持久层缓存

mybatis提供一级缓存和二级缓存

使用mybatis如何实现查询缓存

mybatis一级缓存是一个sqlSession级别,sqlsession只能访问自己的一级缓存的数据,二级缓存是跨sqlSession,是mapper级别的缓存,对于mapper级别的缓存不同的sqlsession是可以共享的。

3 一级缓存

3.1 原理

使用mybatis如何实现查询缓存

第一次发出一个查询sql,sql查询结果写入sqlsession的一级缓存中,缓存使用的数据结构是一个map<key,value>

key:hashcode+sql+sql输入参数+输出参数(sql的唯一标识)

value:用户信息

同一个sqlsession再次发出相同的sql,就从缓存中取不走数据库。如果两次中间出现commit操作(修改、添加、删除),本sqlsession中的一级缓存区域全部清空,下次再去缓存中查询不到所以要从数据库查询,从数据库查询到再写入缓存。

每次查询都先从缓存中查询:

使用mybatis如何实现查询缓存
 

如果缓存中查询到则将缓存数据直接返回。

如果缓存中查询不到就从数据库查询:

使用mybatis如何实现查询缓存

3.2 一级缓存配置

mybatis默认支持一级缓存不需要配置。

注意:mybatis和spring整合后进行mapper代理开发,不支持一级缓存,mybatis和spring整合,spring按照mapper的模板去生成mapper代理对象,模板中在最后统一关闭sqlsession。

3.3 一级缓存测试

//一级缓存   @Test   public void testCache1() throws Exception {      SqlSession sqlSession = sqlSessionFactory.openSession();     UserMapper userMapper = sqlSession.getMapper(UserMapper.class);          //第一次查询用户id为1的用户     User user = userMapper.findUserById(1);     System.out.println(user);          //中间修改用户要清空缓存,目的防止查询出脏数据               //第二次查询用户id为1的用户     User user2 = userMapper.findUserById(1);     System.out.println(user2);          sqlSession.close();         } 

--结束END--

本文标题: 使用mybatis如何实现查询缓存

本文链接: https://www.lsjlt.com/news/226567.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用mybatis如何实现查询缓存
    这篇文章将为大家详细讲解有关使用mybatis如何实现查询缓存,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1 缓存的意义将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上...
    99+
    2023-05-31
    mybatis 查询缓存
  • 使用MyBatis怎么对缓存进行查询
    使用MyBatis怎么对缓存进行查询?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、一级查询缓存MyBatis一级缓存是基于org.apache.ibatis...
    99+
    2023-05-31
    mybatis
  • myBatis如何实现查询
    这篇文章主要为大家展示了“myBatis如何实现查询”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“myBatis如何实现查询”这篇文章吧。把查询的字段,查询的条...
    99+
    2022-10-19
  • 使用Java实现先查询缓存再查询数据库
    目录前言栗子思路分析原理介绍代码实现项目代码配置文件项目结构SpringBootQueryApplication.javaGoods.javaCacheSelector.j...
    99+
    2022-11-13
  • MyBatis如何使用PageHelper实现分页查询
    目录使用PageHelper实现分页查询1、创建数据表2、创建项目2.1 创建实体类(Entity层)2.2 数据库映射层(Mapper层)3、运行测试MyBatis PageHel...
    99+
    2022-11-12
  • 使用MyBatis如何实现一级缓存与二级缓存
    这期内容当中小编将会给大家带来有关使用MyBatis如何实现一级缓存与二级缓存,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。MyBatis缓存我们知道,频繁的数据库操作是非常耗费性能的(主要是因为对于DB...
    99+
    2023-05-31
    mybatis 一级缓存 二级缓存
  • MySQL 普通查询、流式查询、游标查询以及使用 mybatis 如何实现
    MySQL 普通查询、流式查询、游标查询以及使用 mybatis 如何实现 MySQL 普通查询、流式查询、游标查询以及使用 mybatis 如何实现普通查询流式查询游标查询mybatis 如...
    99+
    2023-09-28
    mybatis java mysql
  • 使用Mybatis如何实现配置二级缓存
    这篇文章给大家介绍使用Mybatis如何实现配置二级缓存,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Mybatis的二级缓存配置相当容易,要开启二级缓存,只需要在你的Mapper 映射文件中添加一行:<...
    99+
    2023-05-31
    mybatis 二级缓存
  • 如何使用mybatis-plus实现分页查询功能
    今天就跟大家聊聊有关使用mybatis-plus如何实现分页查询功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 引入依赖...
    99+
    2022-11-13
  • MyBatis复杂Sql查询如何实现
    这篇文章主要介绍“MyBatis复杂Sql查询如何实现”,在日常操作中,相信很多人在MyBatis复杂Sql查询如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MyBatis复杂Sql查询如何实现”的疑...
    99+
    2023-07-04
  • mybatis使用collection嵌套查询的实现
    在开发中,可能会遇到一对多的关系,这个时候,一条sql语句就难以胜任这个任务了。只能先执行一条sql,然后根据返回的结果,再做一次sql关联查询,这个时候,使用mybatis的col...
    99+
    2022-11-13
  • 使用Mybatis如何实现多个控制条件查询
    目录实现多个控制条件查询扩展知识实现多个条件简单查询数据库的字段名和实体类的属性名不一致时实现多个条件复杂查询MyBatis条件查询总结1.if条件语句2.choose(whenot...
    99+
    2022-11-13
  • 模糊查询怎么使用mybatis来实现
    模糊查询怎么使用mybatis来实现?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。mybatis中分页有3种方式来实现,通过sql语句(两种传参方式)来实现,通过mybat...
    99+
    2023-05-31
    mybatis 模糊查询
  • 如何在mysql中查询缓存
    本篇文章为大家展示了如何在mysql中查询缓存,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、查询缓存的实现流程二、配置查询缓存查看当前的mysql数据库是否支持查询缓存SHOW VAR...
    99+
    2023-06-07
  • mybatis如何使用注解实现一对多关联查询
    mybatis 注解实现一对多关联查询 @Select("select id,mockexam_section as section,id as sectionId" ...
    99+
    2022-11-12
  • jQuery如何使用子查询缓存的父元素
    小编给大家分享一下jQuery如何使用子查询缓存的父元素,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用子查询缓存的父元素正如...
    99+
    2022-10-19
  • 如何使用SpringCache进行缓存数据库查询
    这篇文章给大家分享的是有关如何使用SpringCache进行缓存数据库查询的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SpringCache进行缓存数据库查询1、在SpringBoot的启动类上添加注解@Ena...
    99+
    2023-06-25
  • mybatis如何实现SQL查询拦截修改
    这篇文章将为大家详细讲解有关mybatis如何实现SQL查询拦截修改,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言截器的一个作用就是我们可以拦截某些方法的调用,我们可...
    99+
    2022-10-18
  • mybatis如何实现in传入数组查询
    目录mybatis实现in语句传入数组1.数据样式2.实现方法3.sql语句mybatis数组传递注意事项1.直接传递数组2.将数字放入map中传递mybatis实现in语句传入数组...
    99+
    2022-11-12
  • Mybatis Plus使用queryWrapper怎么实现复杂查询
    这篇文章主要讲解了“Mybatis Plus使用queryWrapper怎么实现复杂查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mybatis Plus使用queryWrapper怎么...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作