MyBatis中的缓存介绍与示例

这篇具有很好参考价值的文章主要介绍了MyBatis中的缓存介绍与示例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

什么是缓存?

一级缓存

实例效果

二次缓存

示例效果


什么是缓存?

在用户访问相同数据时,需要对数据库多次访问,导致产生大量IO、读写硬盘的操作,效率低下,有了缓存首次访问时,查询到数据库数据库,将数据库存储到缓存中,再次访问时,直接访问缓存减少IO的与赢哦读写,提高效率

一级缓存

是指同一个sqlsession发起的多次同构查询,会将数据保存在一级缓存中

实例效果

MyBatis中的缓存介绍与示例,# Mybatis,mybatis,缓存,java

@Test
public void OneText(){
    SqlSession session = MyBatisUtils.getSession();
    UserDao userDao = session.getMapper(UserDao.class);
    User user = userDao.selectById(1);
    System.out.println(user);
    System.out.println("-------一级缓存-------");
​
    SqlSession session1 = MyBatisUtils.getSession();
    UserDao mapper = session.getMapper(UserDao.class);
    User user1 = mapper.selectById(1);
    System.out.println(user1);
}

二次缓存

是指只要sqlSessionFactory是同一个即可取出缓存

注意事项:对事务进行提交或关闭才能有二级缓存

@Test
public void TwoText(){
    SqlSession session = MyBatisUtils.getSession();
    UserDao userDao = session.getMapper(UserDao.class);
    User user = userDao.selectById(1);
    session.close();sqlSession2.close(); //缓存未击中,重新查询数据库、重新缓存
​
    SqlSession session3 = MyBatisUtils.getSession();
    UserDao mapper2 = session3.getMapper(UserDao.class);
    User user3=new User();
    user3.setId(2);
    user3.setSex("333");
    user3.setPassword("000");
    user3.setName("@@@");
    mapper2.updateUser(user3);
    session3.commit();
    session3.close();
​
    System.out.println("------二级缓存开始-------");
​
    SqlSession session1 = MyBatisUtils.getSession();
    UserDao mapper = session1.getMapper(UserDao.class);
    User user1 = mapper.selectById(1);
    session1.close();//关闭才能产生缓存
​
    System.out.println("------二级缓存继续------");
​
    SqlSession session2 = MyBatisUtils.getSession();
    UserDao mapper1 = session2.getMapper(UserDao.class);
    User user2 = mapper1.selectById(1);
    session2.close();
​
    System.out.println("------我们继续二级缓存------");
    SqlSession session4 = MyBatisUtils.getSession();
    UserDao mapper3 = session4.getMapper(UserDao.class);
    User user4 = mapper3.selectById(1);
    session4.close();
    System.out.println(user4);
}
示例效果

MyBatis中的缓存介绍与示例,# Mybatis,mybatis,缓存,java文章来源地址https://www.toymoban.com/news/detail-549045.html

到了这里,关于MyBatis中的缓存介绍与示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mybatis学习|Mybatis缓存:一级缓存、二级缓存

    MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地定制和配置缓存。缓存可以极大的提升查询效率。 MyBatis系统中默认定义了两级缓存:一级缓存和二级缓存 默认情况下,只有一级缓存开启。(SqlSession级别的缓存,也称为本地缓存) 二级缓存需要手动开启和配置,他是

    2024年02月09日
    浏览(34)
  • Java Web现代化开发:Spring Boot + Mybatis + Redis二级缓存

    Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。Redis是当今十分主流的分布式key-value型数据库,在web开发中,我们常用它来缓存数据库的查询结果。 本篇博客将介绍如何使用Spring-Boot快速搭建一

    2024年01月17日
    浏览(55)
  • java项目性能优化(MyBatis中开启查询缓存及flushCache与useCache的使用)

    在java项目中,如果需要大量的DB查询,导致缓存过多,项目运行缓慢,可以设置在select查询时,添加二级缓存的清空。 如果没有去配置flushCache、useCache,那么默认是启用缓存的。 1,flushCache默认为false,表示任何时候语句被调用,都不会去清空本地缓存和二级缓存。 2,useC

    2024年01月20日
    浏览(41)
  • MyBatis第六讲:MyBatis缓存

    MyBatis 提供了一级缓存和二级缓存的支持。默认情况下,MyBatis 只开启一级缓存。 8、1MyBatis一级缓存 一级缓存是基于MyBatis自带的 HashMap 本地缓存,作用范围为 SqlSession 域内。当刷新或者关闭之后,该 SqlSession 中所有的缓存就会被清空。 在参数和 SQL 完全一样的情况下,我们使

    2024年02月11日
    浏览(47)
  • 【Java系列】Mybatis-Plus 使用方式介绍

    Mybatis-Plus 提供了多种方式来执行 SQL,包括使用注解、XML 映射文件和 Lambda 表达式等。其中,使用 Lambda 表达式是 Mybatis-Plus 推荐的方式,因为它更加直观和类型安全。 以下是一个使用 Lambda 表达式执行 SQL 的示例,现在我们有一个名为  User  的实体类,其中包含  id 、 name  

    2024年02月07日
    浏览(91)
  • 【Java系列】Mybatis-Plus 使用介绍二

    你只管努力,其他交给时间,时间会证明一切。 MyBatis-Plus 是 MyBatis 的增强工具,它简化了 MyBatis 的开发,并提供了许多实用的功能和工具类。下面是 MyBatis-Plus 的使用方法: 在 Maven 项目中,需要在 pom.xml 文件中添加如下依赖: 其中  mybatis-plus-boot-starter  是 MyBatis-Plus 的 S

    2024年02月08日
    浏览(52)
  • 【MyBatis】五、MyBatis的缓存机制与逆向工程

    MyBatis的一级缓存是默认开启的,是基于SqlSession级别的缓存,也就是说,只要是同一个sqlSession,只要执行的语句相同,则不会去数据库中进行查找,而是会从缓存中找到对应的结果。 使用了不同的sqlsession对象 同一个sqlsession对象,但查询条件不同 两次查询之间进行了增删改

    2024年02月09日
    浏览(45)
  • 橘子学Mybatis07之Mybatis关于缓存的设计

    很逆天的一件事是,我上一次发mybatis是在2022年10月15号,然后直到今天才开始总结下一篇Mybatis的东西。一年里面忙成那啥了,而且重心都投入在了Elasticsearch的学习上面,基本一年下来都在搞ES,并且考下了ECE认证,后续如果有时间,一直想写一些es学习的总结,分享一下。

    2024年01月18日
    浏览(41)
  • MyBatis的缓存,一级缓存,二级缓存

    10.1、MyBatis的一级缓存 一级缓存是SqlSession级别的,通过 同一个 SqlSession对象 查询的结果数据会被缓存,下次执行 相同的查询语句 ,就 会 从缓存中(缓存在内存里) 直接获取,不会重新访问数据库(数据库在磁盘里),也就是说就执行一次sql。一级缓存 默认开启 。 使一级

    2024年02月07日
    浏览(47)
  • Mybatis缓存机制(一级缓存、二级缓存、三级缓存)

    缓存就是内存中的数据,常常来自对数据库查询结果的保存。 使用缓存,我们可以避免频繁与数据库进行交互,从而提高响应速度。 Mybatis的缓存分为一级缓存、二级缓存、三级缓存。 一级缓存: 作用域是同一个 SqlSession,在同一个 sqlSession 中两次执行相同的 sql 语句, 第一

    2024年02月05日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包