mybatis 二级缓存在数据没有更新修改的情况下默认保存的作用域namespace
1 首先要在引入数据源的地方添加开启mybatis缓存
// 读取配置
sqlSessionFactoryBean.setTypeAliasesPackage("com.*.*.*.model");
//-----------------------mybatis second cache start------------------------------
org.apache.ibatis.session.Configuration ibatisConfiguration = new org.apache.ibatis.session.Configuration();
ibatisConfiguration.setCacheEnabled(true);
sqlSessionFactoryBean.setConfiguration(ibatisConfiguration);
//-------------------------mybatis second cache end----------------------------
//设置mapper.xml文件所在位置
Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath:com/*/*Mapper.xml");
sqlSessionFactoryBean.setMapperLocations(resources);
2 然后
1)当sql写在mybatis 注解里面 则在对应的类上加@CacheNamespace注解 标记未开启二级缓存
2) 当时xml文件配置sql 则只要在对应的mapper.xml 文件mapper标签内加入<cache></cache> 当有的方法禁用二级缓存则对应的<select ... useCache="false">加入
useCache="false"属性
3 最后要实现二级缓存的实体类必须实现序列化 implements Serializable
注:只能在【只有单表操作】的表上使用缓存
insert,update,delete操作会清空所在namespace下的全部缓存。
最后 最好不要用二级缓存 建议只是测试使用