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();
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。