2013年6月7日金曜日

Apache CommonsのBeanUtilsのcopyPropertiesの使い方

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を許容します。

参考文献一覧


Written By : // 11:07
Category:

0 コメント:

コメントを投稿

 

About

このブログは筆者の備忘録として色々記載しています。

Blog Archive

Powered by Blogger.