MyBatis注解 @CacheNamespace的用法解析

385人浏览 / 0人评论

本文更新日期:2019年10月5日

1、@CacheNamespace的源码分析

@CacheNamespace注解主要用于mybatis二级缓存,等同于属性。默认情况下,MyBatis 3 没有开启二级缓存,要开启二级缓存,需要在SQL 映射文件(mapper.xml)中添加一行:


   

当然,前提还需要在全局配置文件中开启缓存:

CacheNamespace是注解,其源码如下所示:

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface CacheNamespace {
  Class implementation() default PerpetualCache.class;

  Class eviction() default LruCache.class;

  long flushInterval() default 0;

  int size() default 1024;

  boolean readWrite() default true;
  
  boolean blocking() default false;

  Property[] properties() default {};

}
2、CacheNamespace的使用注意事项

虽然xml配置和注解的功能基本相同,但是使用@CacheNamespace时候要注意:配置文件和接口注释是不能够配合使用的。只能通过全注解的方式或者全部通过xml配置文件的方式使用。见下面的例子:

@CacheNamespace(implementation = MybatisRedisCache.class)
public interface UserMapper(
    @Select("select * from t_user where user_id = #{userId}")
    @Options(useCache = true)
    List getUser(User u);
}



 
    
        
        
        
        
    
 
    
        select * from test where id = #{id}
    

全部评论

晴天下起了小雨
2017-10-01 18:00
很喜欢,果断关注了
wjmyly7336064
2017-10-01 18:00
相当实用,赞美了
橘大佬
2017-10-01 18:00
就是有些细节再到位点就好了…