mybatis一级缓存理解

mybatis一级缓存理解

大家在mybatis中都或多或少听说过一级和二级缓存,
一级缓存的作用域为同一个sqlSession。
个人对一级缓存虽然了解在同一个sqlSession中缓存起作用,在执行插入,删除,修改之后缓存会被清除。
自己想了一下是不是每一次接口的请求进来都会创建一个sqlSession呢?如果创建了一个sqlSession那么这个一级缓存存在还有什么意义呢?
在查阅相关博客后总结出来对一级缓存的一些理解,可能存在一些错误请指出。
查询: 如果进来一个查询操作 mybatis会根据 :(statementId + rowBounds + 传递给JDBC的SQL + 传递给JDBC的参数值) 来获取是否存在这样一个sqlSession 如果没有则创建并且进入数据库查询数据,然后将数据缓存在cache中 ,如果存在(存在则表示 这个查询语句与之前的进行过得查询语句一样,不需要再进入数据库查询)则获取这个sqlSession,然后通过查询cache(缓存)中的数据。
更新数据库: 但是如果此时进来一个插入,删除,修改的操作呢,这样是不可能获取到这个sqlSession的 并且 mybatis会清除这个sqlSession的cache,那么通过之前的(statementId + rowBounds + 传递给JDBC的SQL + 传递给JDBC的参数值)是无法获取到sqlSession的 ,mybatis会清除相应的mapper下的所有 sqlSession 。
小白作者,如有错误请指出~
文章参考:MyBatis的一级缓存实现详解 及使用注意事项
文章参考:在同一个方法中,Mybatis多次请求数据库,是否要创建多个SqlSession会话

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值