首先建一个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();
}
}
}
发表回复