package com.blinkcoder.model;
import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.ehcache.CacheKit;
/**
* User: Michael Chen
* Email: yidongnan@gmail.com
* Date: 13-11-9
* Time: 上午10:58
*/
public abstract class MyModel<M extends Model> extends Model<M> {
static final Object[] NULL_PARA_ARRAY = new Object[0];
public M findFirstByCache(String cacheName, Object key, String sql, Object... paras) {
M result = CacheKit.get(cacheName, key);
if (result == null) {
result = findFirst(sql, paras);
CacheKit.put(cacheName, key, result);
}
return result;
}
public M findFirstByCache(String cacheName, Object key, String sql) {
M result = CacheKit.get(cacheName, key);
if (result == null) {
result = findFirst(sql, NULL_PARA_ARRAY);
CacheKit.put(cacheName, key, result);
}
return result;
}
public boolean Save() {
boolean result = super.save();
if (result)
removeCache();
return result;
}
public boolean Update() {
boolean result = this.update();
if (result)
removeCache();
return result;
}
public boolean Delete() {
boolean result = this.delete();
if (result)
removeCache();
return result;
}
abstract protected void removeCache();
abstract public M Get(int id);
}