Apache Commonsにはかゆい所に手が届く便利なライブラリであります。
その中でJavaBeansを簡単に扱えるライブラリ「BeanUtils」のcopyProperiesの使い方についてメモを記載したいと思います。
前提条件
- Java 1.7.XX
- Windows XP
- commons-beanutils-1.8.3.jar
- copyProperiesとは
- ふたつのJavaBeansのインスタンス同士で共通するプロパティをコピーします。
package test;
import java.lang.reflect.InvocationTargetException;
import java.sql.Date;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.DateConverter;
public class Test {
public class Hoge {
int a;
String b;
Date c;
public Hoge() {
}
/**
* @return a
*/
public int getA() {
return a;
}
/**
* @param a セットする a
*/
public void setA(int a) {
this.a = a;
}
/**
* @return b
*/
public String getB() {
return b;
}
/**
* @param b セットする b
*/
public void setB(String b) {
this.b = b;
}
/**
* @return c
*/
public Date getC() {
return c;
}
/**
* @param c セットする c
*/
public void setC(Date c) {
this.c = c;
}
}
public void test() {
Hoge hoge1 = new Hoge();
hoge1.setA(1);
hoge1.setB("a");
hoge1.setC(null);
Hoge hoge2 = new Hoge();
try {
//Date Null対策
//Dateがnullの場合エラーが起きるためNull OK に設定
ConvertUtils.register(new DateConverter(null), java.util.Date.class);
//hoge2がコピー先、hoge1がコピー元
BeanUtils.copyProperties(hoge2, hoge1);
//設定を元に戻す
ConvertUtils.deregister();
} catch (IllegalAccessException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}
Dateにnullが入っている場合だと、デフォルトでエラーになってしまうので、ConvertUtils.register(new DateConverter(null), java.util.Date.class);
でnullを許容します。


0 コメント:
コメントを投稿