MyBatis基于注解的二级缓存_@CacheNamespace的用法解析
2019-09-18 15:06:49  By: shinyuu

之前写项目一直是把 sql 语句写的 XML 里面的,后来写着写着就习惯了 @Select 这种注解的方式,后来就遇到一个缓存的问题,使用@Select也需要使用缓存,这里就涉及到了 @CacheNamespace 这个注解,使用方式也很简单。


源代码如下

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface CacheNamespace {
    Class<? extends org.apache.ibatis.cache.Cache> implementation() default PerpetualCache.class;

    Class<? extends org.apache.ibatis.cache.Cache> eviction() default LruCache.class;

    long flushInterval() default 0;

    int size() default 1024;

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

    /**
     * Property values for a implementation object.
     * @since 3.4.2
     */
    Property[] properties() default {};
  
}


使用方法

@CacheNamespace(implementation = EhcacheCache.class)
public interface IDiTopicMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(DiTopic record);

    int insertSelective(DiTopic record);

    @Options(useCache = false)
    DiTopic selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(DiTopic record);

    int updateByPrimaryKey(DiTopic record);
	
    @Options(useCache = false)
	@Select("select * from di_topic LIMIT #{start,jdbcType=INTEGER}, #{length,jdbcType=INTEGER};")
    List<DiTopic> selectTopics(@Param("start")int start, @Param("length")int length);
	
	@Select("select * from di_topic order by id desc;")
    List<DiTopic> selectTopping();

}


这上面是代码中,先是用 @CacheNamespace(implementation = EhcacheCache.class) 开启了缓存,但这 selectTopics 这个方法中有配置了不缓存

若资源对你有帮助,浏览后有很大收获,不妨小额打赏我一下,你的鼓励是维持我不断写博客最大动力。

想获取DD博客最新代码,你可以扫描下方的二维码,关注DD博客微信公众号(ddblogs)。

或者你也可以关注我的新浪微博,了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间,可以对该博文进行评论,希望不吝赐教。

为保证及时回复,可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问,祝你生活愉快、工作顺心、欢迎常来逛逛。


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+