首先建一个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();

      }

  }

}


歲月
10 声望3 粉丝