冰风2-缓存
来源:互联网 发布:张国荣 唱功 知乎 编辑:程序博客网 时间:2024/06/08 06:57
缓存
1.CacheUnit
package com.xf.common.unit;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.apache.commons.beanutils.BeanUtils;import com.xf.common.util.StringUtil;/** * * @author 董晓峰 * @datetime 2017年8月4日 下午6:10:09 * @editnote * */public abstract class CacheUnit { private String DMZL = ""; private String fieldID = "id"; private String fieldMC = "mc"; private String fieldKey = "key"; private String fieldValue = "value"; public List listDM = new ArrayList(); public String getDMZL() { return this.DMZL; } public void setDMZL(String dMZL) { DMZL = dMZL; } public String getFieldID() { return this.fieldID; } public void setFieldID(String fieldID) { this.fieldID = fieldID; } public String getFieldMC() { return this.fieldMC; } public void setFieldMC(String fieldMC) { this.fieldMC = fieldMC; } public String getFieldKey() { return this.fieldKey; } public void setFieldKey(String fieldKey) { this.fieldKey = fieldKey; } public String getFieldValue() { return this.fieldValue; } public void setFieldValue(String fieldValue) { this.fieldValue = fieldValue; } public List getDMList(String dmlb) { return this.listDM; } public Object getDMByID(String dmlb, String id) { try { Iterator iter = this.listDM.iterator(); while (iter.hasNext()) { Object obj = iter.next(); String tid = BeanUtils.getProperty(obj, getFieldID()); if (id.equals(tid)){ return obj; } } } catch (Exception e) { return null; } return null; } public Object getDMByKey(String dmlb, String strKey) { try { Iterator iter = this.listDM.iterator(); while (iter.hasNext()) { Object obj = iter.next(); String key = BeanUtils.getProperty(obj, getFieldKey()); if (key == null) { continue; } if (key.equals(strKey)) { return obj; } } } catch (Exception ex) { ex.printStackTrace(); return null; } return null; } public String getMCByID(String dmlb, String id) { Object obj = getDMByID(dmlb, id); if (obj == null || StringUtil.isEmpty(id)) return null; try { return BeanUtils.getProperty(obj, getFieldMC()); } catch (Exception ex) { } return null; } /** * 通过key值得到名称 * * @param dmlb(缓存的类比) * @param strKey key值 * @return 名称mc * @datetime 2017年9月26日 上午11:04:11 * @editnote * */ public String getMCByKey(String dmlb, String strKey) { Object obj = getDMByKey(dmlb, strKey); if (obj == null || StringUtil.isEmpty(strKey)) return null; try { return BeanUtils.getProperty(obj, getFieldMC()); } catch (Exception ex) { } return null; }}
注:
- 这里面的StringUtil类为我自己写的工具类,详细查看文章中的Util模块。
- 这的StrinUitl.isEmpty方法功能是判断字符串是否为空
- BeanUtis为引入的jar包。可在冰风1里面查看
2.CacheUnitUSER
package com.xf.common.unit;import java.util.List;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import com.xf.common.util.SpringUtil;import com.xf.dao.base.PublicDao;import com.xf.entity.table.GG_USER;import com.xf.exception.MisException;/** * * @author 董晓峰 * @datetime 2017年8月4日 下午9:49:41 * @editnote * */public class CacheUnitUSER extends CacheUnit { private static final Log log = LogFactory.getLog(CacheUnitUSER.class); public CacheUnitUSER(){ setDMZL("USER"); setFieldID("id"); setFieldMC("name"); setFieldKey("username"); PublicDao publicDao = (PublicDao) SpringUtil.getBean("publicDao"); try { List<GG_USER> listUser = publicDao.listAllUser(); this.listDM = listUser; } catch (Exception e) { log.error(e); throw new MisException(e); } }}
注:
想加入那张表 就再写一个类继承CacheUnit 就好了
3.最后写一个工厂类
package com.xf.common.unit;import java.util.HashMap;import com.xf.common.util.StringUtil;/** * * @author 董晓峰 * @datetime 2017年8月4日 下午6:12:01 * @editnote * */public class CacheFactory { private static CacheFactory dmFactory = new CacheFactory(); private static HashMap<String, CacheUnit> hmDMZL = new HashMap<String, CacheUnit>(); public static CacheFactory getInstance() { return dmFactory; } public static CacheUnit factory(String dmlb) { if(hmDMZL.containsKey(dmlb)){ return hmDMZL.get(dmlb); } return createDm(dmlb); } private static CacheUnit createDm(String dmlb){ CacheUnit dm = null; if(StringUtil.isEmpty(dmlb)){ return null; } if(dmlb.equals("USER")){ dm = new CacheUnitUSER(); } hmDMZL.put(dmlb, dm); return dm; } /** * 清理全部缓存 * @datetime 2017年8月4日 下午10:01:17 * @editnote * */ public static void clear() { for (String key : hmDMZL.keySet()) { CacheUnit unit = hmDMZL.get(key); unit.listDM = null; unit = null; } hmDMZL.clear(); } /** * 清理指定代码表缓存 * @param dmlb * @datetime 2017年8月4日 下午10:01:44 * @editnote * */ public static void clear(String dmlb) { if (hmDMZL.containsKey(dmlb)) { CacheUnit unit = hmDMZL.get(dmlb); hmDMZL.remove(dmlb); unit.listDM = null; unit = null; } }}
到这里缓存基本上已经写完了。
4.还可以用单例模式写一个类来调用缓存
package com.xf.common;import java.util.List;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import com.xf.common.unit.CacheFactory;import com.xf.common.unit.CacheUnit;/** * 缓存 * * @author 董晓峰 * @datetime 2017年8月4日 下午6:07:23 * @editnote 缓存的表有 GG_USER GG_DMNR * */public class DMLoader { private static final Log log = LogFactory.getLog(DMLoader.class); private static DMLoader dmLoader = null; private DMLoader(){ } public static DMLoader getInstance(){ if(dmLoader == null){ dmLoader = new DMLoader(); } return dmLoader; } /**获取全部代码*/ public static List<?> getDMList(String dmlb) { CacheUnit flyweight = CacheFactory.factory(dmlb); return flyweight.getDMList(dmlb); } /**根据ID获得这个对象*/ public static Object getDMByID(String dmlb, String id) { CacheUnit flyweight = CacheFactory.factory(dmlb); return flyweight.getDMByID(dmlb, id); } /**根据主键获取这个对象*/ public static Object getDMByKey(String dmlb, String key) { CacheUnit flyweight = CacheFactory.factory(dmlb); return flyweight.getDMByKey(dmlb, key); } /**根据ID获得名称*/ public static String getMCByID(String dmlb, String id) { CacheUnit flyweight = CacheFactory.factory(dmlb); String strMC = flyweight.getMCByID(dmlb, id); return strMC; } /**根据Key获得这个名称*/ public static String getMCByKey(String dmlb, String key) { CacheUnit flyweight = CacheFactory.factory(dmlb); String strMC = flyweight.getMCByKey(dmlb, key); return strMC; } /** * 代码类别清理:dmlb * * @param dmlb * @author 董晓峰 * @datetime 2017年8月5日 上午12:04:21 * @editnote * */ public static void clear(String dmlb) { CacheFactory.clear(dmlb); log.info("代码类别清理:" + dmlb); } /** * 代码类别清理:全部 * * @author 董晓峰 * @datetime 2017年8月5日 上午12:04:07 * @editnote * */ public static void clear() { CacheFactory.clear(); log.info("代码类别清理:全部"); }}
5.把DMLoader里的方法加入自定义标签中
阅读全文
0 0
- 冰风2-缓存
- 有关缓存,缓存算法,缓存框架:part 2
- Hibernate缓存机制 2之数据缓存
- 浏览器缓存机制(2)-应用缓存
- 解决laravel5.2 分页缓存,缓存清理
- Android 缓存(2)---硬盘缓存DiskLruCache
- 页面部分缓存2
- Hibernate缓存机制2
- C#缓存介绍(2)
- hibernate缓存2
- 模版缓存2
- smarty缓存2
- php smarty 缓存 2
- java缓存2
- 帧缓存FBO(2)
- NSURLCache 2 内存缓存
- BIEE缓存之2
- ios清除缓存2
- ssh 链接问题
- 安卓手机使用NFC读取MifareClassic等标签信息
- TLS/SSL 协议详解 (31)TLS1.1 TLS1.2 在CBC模式下两种不同的加解密方式及优化思考
- 《Hibernate学习笔记九》:多对一和一对多的关联关系
- 常见字典常量和操作
- 冰风2-缓存
- 荷兰国旗问题
- 关于Android7.0的临时授权,出现FileUriExposedException错误
- android 获取本机其他app的版本信息
- C++ const和#define的异同
- Springmvc+mybatis+shiro+Dubbo+ZooKeeper+Redis+KafKa j2ee分布式架构核心技术
- Android: 详解触摸事件如何传递
- MFC_TreeCtrl 树控件
- PB tab open事件无法切换页面