Mybatis的一级缓存,在更新数据之后数据库确实改变,但是没有更新缓存,依然从换缓存中拿数据,但是数据也没错是怎么回事?

风格欧科 2020-10-15 02:55:09
今天学习Mybatis的一级缓存,遇到一个问题,在我update数据时,按理说再次拿同一行数据应该重新从数据库中拿数据,但是我这里依然从缓存中拿,奇怪的时更新成功了,第二次拿到的数据也是更新后的,求大佬们解答啊。

运行之后的结果如下图所示:
...全文
4203 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
榕之行� 2021-05-09
  • 打赏
  • 举报
回复
引用 3 楼 Punfine 的回复:
我也遇到过同样的问题,你可以看一看你的userDao.xml中update语句的标签是不是写成了select,应该是update,写成select不会报错,mybatis也会执行更新操作,但不会更新缓存,所以会造成这种情况
太赞了,谢谢
Punfine 2020-12-14
  • 打赏
  • 举报
回复
我也遇到过同样的问题,你可以看一看你的userDao.xml中update语句的标签是不是写成了select,应该是update,写成select不会报错,mybatis也会执行更新操作,但不会更新缓存,所以会造成这种情况
谶谶谶 2022-04-04
  • 举报
回复
@Punfine 没有写错标签,还是有同样的问题,怎么办
韩_师兄 2020-10-16
  • 打赏
  • 举报
回复
一级缓存默认开启,在执行update/delete/insert后,会清空缓存.
RockeyCui 2020-10-16
  • 打赏
  • 举报
回复
一级缓存,SqlSession 执行了任何一个 dml (update()、delete()、insert())操作则会清空其下的缓存内容。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧