牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2016-12-21 投稿人: 浏览次数:3223

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();

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。