J2Cache 新增 Mybatis 支持模块,代码少到没 Bug

红薯
 红薯
发布于 2018年05月15日
收藏 17

花了点时间撸了个 MyBatis 的 J2Cache 支持模块,含注释共八十多行代码 (J2CacheAdapter.java),再有 Bug 我就真的要退役了。

使用方法很简单,请看 https://gitee.com/ld/J2Cache/tree/master/mybatis

一直没玩过 MyBatis ,今天撸一把才发现原来给 MyBatis 写缓存扩展模块那么简单,比 Hibernate 简单 100 倍!!!看来 Hibernate 应该比我更早退役!

再次强调一下:

  1. J2Cache 不是另外一个缓存的造轮子框架,它是有实际的用途的,可最大限度的降低对 Redis 的压力

  2. J2Cache 与 JetCache 不同,后者是封装了不同的缓存框架并提供统一的 API 调用。

  3. 在 J2Cache 推出之前,鲜有人提两级缓存框架,现在还蛮火的

别忘了给 https://gitee.com/ld/J2Cache 点个赞 (Star) 哦。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:J2Cache 新增 Mybatis 支持模块,代码少到没 Bug
加载中

精彩评论

OSCharles
OSCharles
我猜明天还有第二个版本出现
xiaolei123
xiaolei123
我猜下午还有第二个版本出现
两江总督是码农
两江总督是码农
J2cache是一个两级缓存框架,它是真正的高性能缓存框架
H
HarryCU1988
setId 就不用参数检查了吗。。:sunglasses:

public J2CacheAdapter(String id) {
if (id == null)
throw new IllegalArgumentException("J2CacheAdapter require an id (cache region)");
this.id = id;
}

public void setId(String id) {
this.id = id;
}

最新评论(49

开源中国马桶盖
开源中国马桶盖
自己实现一个不就对了...二级缓存理念 很多年前就有了...
木头live
木头live
shiro 怎么集成j2cache2.0
zcqshine
zcqshine

引用来自“itmyhome”的评论

这玩意确定有使用者?
开源中国网站就是用的这玩意, 哈哈
itmyhome
itmyhome
这玩意确定有使用者?
tylerchen
tylerchen

引用来自“tylerchen”的评论

以下代码会导致NPE和类型转换错误!!!
@Override
public void putObject(Object o, Object o1) {
this.cache.set(this.id, o.toString(), o1);
}

@Override
public Object getObject(Object key) {
return this.cache.get(this.id, key.toString()).getValue();
}

@Override
public Object removeObject(Object o) {
Object obj = this.cache.get(this.id, o.toString()).getValue();
if (obj != null)
this.cache.evict(this.id, (String)o);
return obj;
}

引用来自“红薯”的评论

不会拉, #J2Cache# 确保返回的 Cache 封装对象不为空

引用来自“tylerchen”的评论

!!!死磕到底!!!
@Override
public void putObject(Object o, Object o1) {
this.cache.set(this.id, o.toString()/*NPE*/, o1);
}

@Override
public Object getObject(Object key) {
return this.cache.get(this.id, key.toString()).getValue();
}

@Override
public Object removeObject(Object o) {
Object obj = this.cache.get(this.id, o.toString()/*NPE*/).getValue();
if (obj != null)
this.cache.evict(this.id, (String)o/*类型转换错误*/);
return obj;
}

引用来自“红薯”的评论

第二个漏改了,第一个传进来的 key 如果是 null ,应该是应用本身的问题。 key 不能是 null 哦
回复@红薯 : :trollface:
FT
FT
这版本刷的 2018最有存在感的开源项目:joy:
Shazi199
Shazi199
红薯:CodeReview?不用做的,发个新闻过一会儿就自动做好了。
红薯
红薯

引用来自“HarryCU1988”的评论

setId 就不用参数检查了吗。。:sunglasses:

public J2CacheAdapter(String id) {
if (id == null)
throw new IllegalArgumentException("J2CacheAdapter require an id (cache region)");
this.id = id;
}

public void setId(String id) {
this.id = id;
}
提交个 PR 啦,别光用嘴 :)
中国牛逼开源程序员
距离新版本发布还有1小时
红薯
红薯

引用来自“tylerchen”的评论

以下代码会导致NPE和类型转换错误!!!
@Override
public void putObject(Object o, Object o1) {
this.cache.set(this.id, o.toString(), o1);
}

@Override
public Object getObject(Object key) {
return this.cache.get(this.id, key.toString()).getValue();
}

@Override
public Object removeObject(Object o) {
Object obj = this.cache.get(this.id, o.toString()).getValue();
if (obj != null)
this.cache.evict(this.id, (String)o);
return obj;
}

引用来自“红薯”的评论

不会拉, #J2Cache# 确保返回的 Cache 封装对象不为空

引用来自“tylerchen”的评论

!!!死磕到底!!!
@Override
public void putObject(Object o, Object o1) {
this.cache.set(this.id, o.toString()/*NPE*/, o1);
}

@Override
public Object getObject(Object key) {
return this.cache.get(this.id, key.toString()).getValue();
}

@Override
public Object removeObject(Object o) {
Object obj = this.cache.get(this.id, o.toString()/*NPE*/).getValue();
if (obj != null)
this.cache.evict(this.id, (String)o/*类型转换错误*/);
return obj;
}
第二个漏改了,第一个传进来的 key 如果是 null ,应该是应用本身的问题。 key 不能是 null 哦
返回顶部
顶部