Java 利用Map实现缓存

一、缓存工具类

package com.zsplat.yyzx.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 缓存机制
 */
public class CacheUtil {
    private static CacheUtil cacheUtil;
    private static Map<String,Object> cacheMap;

    private CacheUtil(){
        cacheMap = new HashMap<String, Object>();
    }

    public static CacheUtil getInstance(){
        if (cacheUtil == null){
            cacheUtil = new CacheUtil();
        }
        return cacheUtil;
    }

    /**
     * 添加缓存
     * @param key
     * @param obj
     */
    public void addCacheData(String key,Object obj){
        cacheMap.put(key,obj);
    }

    /**
     * 取出缓存
     * @param key
     * @return
     */
    public Object getCacheData(String key){
        return cacheMap.get(key);
    }

    /**
     * 清楚缓存
     * @param key
     */
    public void removeCacheData(String key){
        cacheMap.remove(key);
    }
}

二、写一个定时器  定时从数据库里查出数据添加到缓存中 

  CacheUtil.getInstance().addCacheData("cacheYYZS100New", cacheMap);

三、取出缓存

  Map<String , Object> cacheMap = (Map<String, Object>)CacheUtil.getInstance().getCacheData("cacheYYZS100New");

  存缓存和取缓存的方法,知道类型的话,强制转换都没问题

四、分页   捋清楚startIndex和pageSize,count之前的关系就行   用截取list的方法实现分页

if(StringUtils.isNotEmpty(startIndex)&&StringUtils.isNotEmpty(pageSize)){
                Integer start = Integer.parseInt(startIndex);
                Integer size = Integer.parseInt(pageSize);
                if(size*(start+1)<resultCount){
                    dataList = dataList.subList(start*size,size*(start+1));
                }else if(start*size<resultCount){
                    dataList = dataList.subList(start*size,resultCount);
                }else{
                    dataList = new ArrayList<>();
                }
            }

猜你喜欢

转载自www.cnblogs.com/zhou-pan/p/10141521.html