「Java」BeanUtilsクラスのcopyPropertiesメソッドでクラスBeanのフィールドをコピーする

2022年7月1日

書式
copyProperties(Object dest, Object orig)
戻り値:void
コピー元の各値をコピー先へ設定します。
同じ名前のフィールドの中身をコピーします。
1.コピー元クラス(UserIntro.java)の定義

package com.arkgame.study;

public class UserIntro {
      private Integer empId = null;
      private String userName = null;
      private String addr;

      public UserIntro(Integer empId, String userName, String empAddr) {
            super();
            this.empId = empId;
            this.userName = userName;
            this.addr = empAddr;
      }

      public Integer getEmpId() {
            return empId;
      }

      public void setEmpId(Integer empId) {
            this.empId = empId;
      }

      public String getuserName() {
            return userName;
      }

      public void setuserName(String userName) {
            this.userName = userName;
      }

      public String getAddr() {
            return addr;
      }

      public void setAddr(String addr) {
            this.addr = addr;
      }

}

2.コピー先クラス(UserCopyProp.java)の定義

package com.arkgame.study;


public class UserCopyProp {
      private Integer age = null;
      private String userName = null;
      private String addr = null;

      public Integer getAge() {
            return age;
      }

      public void setAge(Integer age) {
            this.age = age;
      }

      public String getuserName() {
            return userName;
      }

      public void setuserName(String userName) {
            this.userName = userName;
      }

      public String getAddr() {
            return addr;
      }

      public void setAddr(String addr) {
            this.addr = addr;
      }

}

3.copyProperties(Object dest, Object orig)
コピー元の属性値をコピー先へセットします。
使用例

package com.arkgame.study;

import java.lang.reflect.InvocationTargetException;

import org.apache.commons.beanutils.BeanUtils;

public class CopyPropertiesDemo {

      public static void main(String[] args) {

            // UserIntroオブジェクト生成 コンストラクターあり (source側)
            UserIntro userIntro = new UserIntro(1001, "User008", "Real Address 007");

            // Userオブジェクト生成 コンストラクターなし (dest側)
            UserCopyProp userCopyProp = new UserCopyProp();
            try {
                  // コピー元(userIntro) コピー先(user)
                  BeanUtils.copyProperties(userCopyProp, userIntro);
                  System.out.println("age属性をコピーしない結果:  " + userCopyProp.getAge());
                  System.out.println("username属性をコピーする結果:  " + userCopyProp.getuserName());
                  System.out.println("addr属性をコピーする結果:  " + userCopyProp.getAddr());

            } catch (IllegalAccessException e) {
                  // TODO 自動生成された catch ブロック
                  e.printStackTrace();
            } catch (InvocationTargetException e) {
                  // TODO 自動生成された catch ブロック
                  e.printStackTrace();
            }

      }

}

実行結果

age属性をコピーしない結果: null
username属性をコピーする結果: User008
addr属性をコピーする結果: Real Address 007

 

Java

Posted by arkgame