자바 빈 과 맵 간 의 상호 전환 실현 방법
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());
}
테스트 결과자바 빈 과 맵 간 의 상호 전환 실현 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 빈 과 맵 의 상호 전환 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.