在分布式的环境中,mybatis的一二级缓存非常危险,二级缓存一定要关闭,一级缓存视情况关闭
一级缓存:
一级缓存的作用域默认是一个SqlSession。Mybatis默认开启一级缓存。
关闭或者使一级缓存失效的方法:
1、在mapper的select标签中设置statementType=STATEMENT
statementType的设置有3种:
STATEMENT:直接操作sql,不进行预编译,获取数据
PREPARED:(默认)预处理,参数,进行预编译,获取数据
CALLABLE:执行存储过程————CallableStatement
2、在mapper的select标签中设置flushCache=“true”
3、全局设置localCacheScope=STATEMENT
二级缓存:
二级缓存的作用域默认是为mapper(namespace)
关闭方法:在mybatis的配置文件中:
<configuration>
<settings>
<!-- 二级缓存开启 -->
<setting name="cacheEnabled" value="false" />
</settings>
</configuration>