前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mybatis获取当前sqlSession,Mybatis清空当前Session的缓存

Mybatis获取当前sqlSession,Mybatis清空当前Session的缓存

作者头像
qubianzhong
发布2018-09-19 13:35:41
2.7K0
发布2018-09-19 13:35:41
举报
文章被收录于专栏:行者常至行者常至

SqlSessionUtils.getSqlSession(sqlSessionFactory);

SqlSessionUtils.getSqlSession(sqlSessionFactory).clearCache();

其中,sqlSessionFactory,是通过spring注入的。

需求情景:

每次update时,都要记录更新了什么字段,由什么值更新为什么值。所以使用的是Aop,在@around方法中,joinPoint.proceed()之前,运用方法的反射查询下数据库得到objectOld;joinPoint.proceed()之后,再运用方法反射查询下数据库得到objectNew。但是,因为每次update之前都会get一个model,在此基础上修改然后再update。所以,有时候就会造成joinPoint.proceed()之前的查询数据库,不会去查询数据库,而是会直接在缓存里得到其值。但是缓存里的是不对的,因为这是需要update的model。故而,需要在joinPoint.proceed()之前的获取model之前,清空下当前sqlSession的缓存。

SqlSessionUtils.getSqlSession(sqlSessionFactory).clearCache();

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年12月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SqlSessionUtils.getSqlSession(sqlSessionFactory);
  • SqlSessionUtils.getSqlSession(sqlSessionFactory).clearCache();
    • 其中,sqlSessionFactory,是通过spring注入的。
      • 每次update时,都要记录更新了什么字段,由什么值更新为什么值。所以使用的是Aop,在@around方法中,joinPoint.proceed()之前,运用方法的反射查询下数据库得到objectOld;joinPoint.proceed()之后,再运用方法反射查询下数据库得到objectNew。但是,因为每次update之前都会get一个model,在此基础上修改然后再update。所以,有时候就会造成joinPoint.proceed()之前的查询数据库,不会去查询数据库,而是会直接在缓存里得到其值。但是缓存里的是不对的,因为这是需要update的model。故而,需要在joinPoint.proceed()之前的获取model之前,清空下当前sqlSession的缓存。
      • SqlSessionUtils.getSqlSession(sqlSessionFactory).clearCache();
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档