共计 1611 个字符,预计需要花费 5 分钟才能阅读完成。
首先建一个 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();
}
}
}
正文完