Apache BeanUtilsBean 의 copy Properties 를 이용 하여 대상 속성 값 copy
개발 중 값 대상 과 실체 간 의 데이터 복 제 를 진행 합 니 다.
아파 치 BeanUtils Bean 의 copy Properties.
테스트 는 다음 과 같 습 니 다:
1 실체 클래스 학생
public class Student {
private int intValue;
private double doubleValue;
private long longValue0;
private boolean booleanValue0;
private Boolean booleanValue1;
private String strintValue;
private java.util.Date utilDateValue;
private java.sql.Date sqlDateValue;
private Integer IntegerValue;
private Long LongValue1;
private Teacher teacher;
//getter/setter
public int getIntValue() {
return intValue;
}
public void setIntValue(int intValue) {
this.intValue = intValue;
}
public double getDoubleValue() {
return doubleValue;
}
public void setDoubleValue(double doubleValue) {
this.doubleValue = doubleValue;
}
public String getStrintValue() {
return strintValue;
}
public void setStrintValue(String strintValue) {
this.strintValue = strintValue;
}
public java.util.Date getUtilDateValue() {
return utilDateValue;
}
public void setUtilDateValue(java.util.Date utilDateValue) {
this.utilDateValue = utilDateValue;
}
public java.sql.Date getSqlDateValue() {
return sqlDateValue;
}
public void setSqlDateValue(java.sql.Date sqlDateValue) {
this.sqlDateValue = sqlDateValue;
}
public Integer getIntegerValue() {
return IntegerValue;
}
public void setIntegerValue(Integer integerValue) {
IntegerValue = integerValue;
}
public long getLongValue0() {
return longValue0;
}
public void setLongValue0(long longValue0) {
this.longValue0 = longValue0;
}
public Long getLongValue1() {
return LongValue1;
}
public void setLongValue1(Long longValue1) {
LongValue1 = longValue1;
}
public boolean isBooleanValue0() {
return booleanValue0;
}
public void setBooleanValue0(boolean booleanValue0) {
this.booleanValue0 = booleanValue0;
}
public Boolean getBooleanValue1() {
return booleanValue1;
}
public void setBooleanValue1(Boolean booleanValue1) {
this.booleanValue1 = booleanValue1;
}
public Teacher getTeacher() {
return teacher;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
}
2 교사 류
public class Teacher {
private int id;
private String name;
//getter/setter
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3 패키지 클래스 BeanUtilPlus 1
package com.test.util;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.DateConverter;
import org.apache.commons.beanutils.converters.SqlDateConverter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* apache BeanUtils, copyProperties date
* @author Yulin
*/
public class BeanUtilPlus1 extends BeanUtils {
private static Map cache = new HashMap();
private static Log logger = LogFactory.getFactory().getInstance(
BeanUtilPlus1.class);
private BeanUtilPlus1() {
}
static {
// sql.date , BeanUtils.copyProperties sql
ConvertUtils.register(new SqlDateConverter(null), java.sql.Date.class);
//ConvertUtils.register(new SqlTimestampConverter(), java.sql.Timestamp.class);
// util.date , BeanUtils.copyProperties util
ConvertUtils.register(new DateConverter(null), java.util.Date.class);
}
public static void copyProperties(Object target, Object source)
throws InvocationTargetException, IllegalAccessException {
// copy
org.apache.commons.beanutils.BeanUtils.copyProperties(target, source);
}
}
4 테스트 클래스 testClient
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import com.test.util.BeanUtilPlus1;
public class testClient {
/**
* BeanUtilsBean.getInstance().copyProperties
* java.sql.Date
* java.util.Date
*
* BeanUtilPlus1.copyProperties
* Date , .
*/
public static void main(String[] args) {
/**
*
*/
Teacher t1=new Teacher();
t1.setId(1);
t1.setName("teacher t1");
Student s1=new Student();
s1.setBooleanValue0(true);
s1.setBooleanValue1(true);
s1.setDoubleValue(1.1);
s1.setIntegerValue(12);
s1.setIntValue(123);
s1.setLongValue0(12L);
s1.setLongValue1(2L);
// s1.setSqlDateValue(new java.sql.Date(new java.util.Date().getTime()));
// s1.setUtilDateValue(new java.util.Date());
s1.setStrintValue("student s1");
s1.setTeacher(t1);
try {
//
Class c = Class.forName("Student");
// Object o = c.newInstance();
Object o=s1;
Method[] ms= c.getMethods();
// System.out.println(ms.length);
System.out.println(" ");
for(Method m:ms){
if( m.getName().contains("get")){
System.out.println("method "+m.getName()+" : ");
System.out.println(m.invoke(o));
}
}
} catch (Exception e) {
e.printStackTrace();
}
Student s2=new Student();
try {
// BeanUtilsBean.getInstance().copyProperties(s2, s1); // copy
BeanUtilPlus1.copyProperties(s2,s1); // copy
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
try {
Class c = Class.forName("Student");
Object o=s2;
Method[] ms= c.getMethods();
System.out.println(" ");
for(Method m:ms){
if( m.getName().contains("get")){
System.out.println("method "+m.getName()+" : ");
System.out.println(m.invoke(o));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
달성 효과:
student 의 속성 값 복사 완료, BeanUtil 간단 한 패키지 방법 (원래 방법 은 복사 할 때 java. util. Date 와 java. sql. Date 가 비어 있 을 때 오류 가 발생 합 니 다.) 패 키 징 후 util. Date 또는 sql. Date 에 직접 값 을 null 로 할당 합 니 다 (등록 기 를 바 꾸 어 구현)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 파일 압축 및 압축 풀기파일 의 간단 한 압축 과 압축 해 제 를 실현 하 였 다.주요 테스트 용 에는 급 하 게 쓸 수 있 는 부분 이 있 으 니 불편 한 점 이 있 으 면 아낌없이 가르쳐 주 십시오. 1. 중국어 문 제 를 해 결 했 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.