直接上源码,定义一个抽象类,必须实现get方法。该方法是用来获取需要缓存的对象的。
import java.util.HashMap;
import java.util.Map;
/**
* 用于从数据库中获取相应值的缓存类
* @author pdy
*
* @param <K,T>
*/
public abstract class CacheGetUtils<T,C,K> {
private Map<K,T> list = new HashMap<K,T>();
public abstract T getModel(C c, K k) throws Exception;
public T get(C c, K k) throws Exception{
if(list.containsKey(k)) {
return list.get(k);
}
T t= this.getModel(c,k);
list.put(k, t);
return t;
}
}
在实际的应用中,实现这一个类,该类有从数据库中获取对象的方法。
CacheGetUtils<Pointproducts,Long,Long> cacheProducts = new CacheGetUtils<Pointproducts,Long,Long>() {
@Override
public Pointproducts getModel(Long c, Long k) throws Exception {
Pointproducts product = pointProductService.selectByPrimaryKey(c, k);
return product;
}
};
这样可以直接使用该类获取缓存对象了。
order.setProductname(cacheProducts.get(companyid, collect.get(0).getProductid()).getProductname());