Java 利用Map實現快取
阿新 • • 發佈:2018-12-19
一、快取工具類
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<>(); } }