因个人服务器小,就一个mysql数据库,网站有点多,然后那些基本是nutz开发的,所以就加了个简单的缓存。
json配置:
nutDao : {
type : "org.nutz.dao.impl.NutDao",
args : [{refer:"dataSource"}]
},
cache : {
type : "org.nutz.dao.cache.CacheExecExterior",
fields : {
cacheController : [{refer : 'cacheController'}],
clazzList : [["com.scxxs.auto.model.CrudUrl",100000]
,["com.xxx.xxx.model.News",100000]
,["com.xxx.xxx.model.Type",100000]],
isEnableCache : true
}
},
cacheController : {
type : "org.nutz.dao.cache.MemeoryCacheImpl",
},
daoExecutorImpl : {
type :
"org.nutz.dao.DaoExecutorImpl",
fields : {
list : [{refer : 'cache'}]
}
}
dao使用:
dao = ioc.get(NutDao.class);
dao.setExecutor(ioc.get(DaoExecutorImpl.class));
相信大家都懂了吧。嘿嘿。
就实现了在本机内存中缓存数据,要加的话,实现接口即可。
以前写的那个版本太老了。不过都是从上面复制过来的代码。凑合用着。
不好意思,没仔细测试。。
DaoExecutorImpl加个方法
private String toExampleStatement(Object[][] mtrx, String sql) {
StringBuilder sb = new StringBuilder();
String[] ss = sql.split("[?]");
int i = 0;
if (mtrx.length > 0) {
for (; i < mtrx[0].length; i++) {
sb.append(ss[i]);
Object obj = mtrx[0][i];
if (obj != null) {
if (obj instanceof Blob) {
Blob blob = (Blob) obj;
obj = "Blob(" + blob.hashCode() + ")";
} else if (obj instanceof Clob) {
Clob clob = (Clob) obj;
obj = "Clob(" + clob.hashCode() + ")";
} else if (obj instanceof byte[] || obj instanceof char[]) {
if (Array.getLength(obj) > 10240)
obj = "*BigData[len=" + Array.getLength(obj) + "]";
} else if (obj instanceof InputStream) {
try {
obj = "*InputStream[len=" + ((InputStream) obj).available() + "]";
}
catch (IOException e) {}
} else if (obj instanceof Reader) {
obj = "*Reader@" + obj.hashCode();
}
}
sb.append(Sqls.formatFieldValue(obj));
}
}
if (i < ss.length)
sb.append(ss[i]);
return sb.toString();
}
然后在传入SQL哪里修改成使用本方法即可。