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 コメント:
コメントを投稿