1. 程式人生 > >Java 利用Map實現快取

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<>();
                }
            }