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

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

你可能感兴趣的:(随米)