首先建一个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();
}
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。