Mybatis缓存处理

在 mybatis 中,当使用同一个 sql 进行多次查询的时候,即使数据发生改变,依然会从 sqlSession 中取数据,并且创建的对象引用也不会发生改变。
此时我们需要关闭 mybatis 缓存以免出现幻读现象。
1.禁用全局缓存。在 mybatis-config.xml 中 添加

"cacheEnabled" value="false" />

2.在业务层禁用缓存。在 xxMapper.java 的指定方法上使用 @Options 注解
注意此时 flushCache = true 是禁用缓存

@Options(flushCache = true)
    Map<String,Object> getDurarionByBussionType();

3.在映射文件中的指定方法的标签中使用 flushCache 属性

<select id="getDurarionByBussionType" flushCache="true" resultType="java.util.Map" parameterType="string">select>

4.清理sqlSession

 SqlSession session = this.sqlSessionFactory.openSession(false);
        session.clearCache();

5.在书写 SQL 时将

 #{变量}改为${变量},使用 $ 将会使mybatis执行相同的 sql 时将参数显式填入其中,而不用占位符。

此种方式不推荐,详情请见:
http://blog.csdn.net/jacxuan/article/details/79163950

你可能感兴趣的:(mybaits)