首先建一个map,该map用来寄存所有的数据
protected static Map<String, User> map = new HashMap<>();
加载所有User,将其放入到User中,map的key为User的id,value为user 加锁是为了爱护平安
public void loadAllUser() {
if (map.size() == 0) { synchronized (map) { try { List<User> userInfoList = userDAO.findAllUser(); for (User user : userInfoList) { map.put(user.getId, user); } } catch (Exception e) { e.printStackTrace(); } } } }
如果须要依据id获取User
public User findById(String id){
if(map.size() == 0){ loadAllUser(); } User user = map.get(id); return user; }
这里须要先判断map是否为空,为空状况下就须要调用loadAllUser办法将数据存入到Map中
假如须要依据Name获取User 将map遍历一边
public User findByName(String name){
if(map.size() == 0){ loadAllUser(); } User user = new User(); for (Map.Entry<String, User> entry : map.entrySet()) { if (entry.getValue().getName.equals(name)) { user = entry.getValue(); } } return user; }
当然,必不可少的一个办法,clear
public void clearCache() {
synchronized (map) { map.clear(); } }
*在对数据进行 增 删 改的时候,必须调用这个clear办法,将缓存清空
这样,一个简略的缓存机制就实现了
这仅仅是自己低见
残缺代码如下
import java.util.HashMap; import java.util.List; import java.util.Map;
/* 查找所以数据放入到缓存 /
public class MapCache { protected static Map<String, User> map = new HashMap<>(); public void loadAllUser() { if (map.size() == 0) { synchronized (map) { try { List<User> userInfoList = userDAO.findAllUser(); for (User user : userInfoList) { map.put(user.getId, user); } } catch (Exception e) { e.printStackTrace(); } } } } /** 依据id查找 */ public User findById(String id) { if (map.size() == 0) { loadAllUser(); } User user = map.get(id); return user; } /** 依据name查找 */ public User findByName(String name) { if (map.size() == 0) { loadAllUser(); } User user = new User(); for (Map.Entry<String, User> entry : map.entrySet()) { if (entry.getValue().getName.equals(name)) { user = entry.getValue(); } } return user; } /** 革除缓存 */ public void clearCache() { synchronized (map) { map.clear(); } }
}