자바 빈 과 맵 간 의 상호 전환 실현 방법

개술
Apache 의 BeanUtils Bean 도구 류 는 매우 강하 고 기본적으로 Bean 작업 의 모든 방법 을 포함한다.여기 서 우 리 는 두 가지 측면 을 이야기 합 니 다.하 나 는 Bean covert to Map 이 고,다른 하 나 는 Map covert to Bean 입 니 다.빈 이 맵 을 돌 리 는 것 은 자바 의 동태 성-reflection 기술 을 이용 한 것 이다.어떤 빈 이 든 동태 적 인 해석 을 통 해 맵 대상 으로 전환 할 수 있 지만 전제 조건 은 field 가 낙타 봉 의 이름 에 부합 되 어야 한 다 는 것 이다.그러나 이것 도 코드 규범 이 고 다른 조건 은 모든 field 가 getter,setter 방법 이 필요 하 다 는 것 이다.맵 돌 림 빈 역시 리 플 렉 션 동 태 를 통 해 빈 으로 해석 된다.자바 의 Reflection 은 사실 매우 중요 합 니 다.우리 가 사용 하 는 많은 도구 류 는 모두 존재 합 니 다.우 리 는 사용 할 줄 알 아야 할 뿐만 아니 라 왜 그런 지 이해 할 수 있 습 니 다.스스로 손 으로 쓰 는 것 이 좋 습 니 다.그러면 더욱 깊이 이해 할 수 있 습 니 다.
Apache BeanUtils 로 Bean 을 지도 로 돌 립 니 다.
코드 구현

/**
   *  apache BeanUtils  Bean covert to Map
   * @throws Exception
   */
  public static void beanToMap() throws Exception {
    User user=new User();
    Map<String,String> keyValues=null;

    user.setPassWord("password");
    user.setComments("test method!");
    user.setUserName("wang shisheng");
    user.setCreateTime(new Date());

    keyValues=BeanUtils.describe(user);

    LOGGER.info("bean covert to map:{}", JSONObject.toJSON(keyValues).toString());
  }
테스트 결과

Apache BeanUtils 로 Bean 으로 맵 돌리 기
코드 구현

/**
   *  apache BeanUtils  Map covert to Bean
   * @throws Exception
   */
  public static void mapToBean() throws Exception {
    Map<String,String> keyValues=new HashMap<>();
    User user=new User();

    keyValues.put("sessionId","ED442323232ff3");
    keyValues.put("userName","wang shisheng");
    keyValues.put("passWord","xxxxx44333");
    keyValues.put("requestNums","34");

    BeanUtils.populate(user,keyValues);

    LOGGER.info("map covert to bean:{}", user.toString());
  }
테스트 결과

BeanUtils 가 Bean 을 맵 으로 돌 리 는 실현 의 손 글씨 Bean 을 맵 으로 돌 리 는 것 을 이해 합 니 다.
코드 구현

/**
   *     (               )
   *       Bean covert to Map
   */
  public static void autoBeanToMap(){
    User user=new User();
    Map<String,Object> keyValues=new HashMap<>();

    user.setPassWord("password");
    user.setComments("test method!");
    user.setUserName("wang shisheng");
    user.setUserCode("2018998770");
    user.setCreateTime(new Date());

    Method[] methods=user.getClass().getMethods();
    try {
      for(Method method: methods){

        String methodName=method.getName();
        //               ,     ;         ,                   
        if (methodName.contains("get")){
          //invoke   get       
          Object value=method.invoke(user);
          //  setXXXX             
          String key=methodName.substring(methodName.indexOf("get")+3);
          Object temp=key.substring(0,1).toString().toLowerCase();
          key=key.substring(1);
          //        
          key=temp+key;
          keyValues.put(key,value);
        }
      }
    }catch (Exception e){
      LOGGER.error("    :",e);
    }

    LOGGER.info("auto bean covert to map:{}", JSONObject.toJSON(keyValues).toString());


  }
테스트 결과

자바 빈 과 맵 간 의 상호 전환 실현 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 빈 과 맵 의 상호 전환 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기