Comment utiliser la réflexion pour copier les propriétés de Pojo vers d’autres beans Java

Comment utiliser la réflexion pour copier des propriétés de Pojo vers d'autres beans Java

Parfois, nous avons besoin de copier les propriétés d'une classe Java vers une autre, nous pouvons le faire manuellement ou avec notre propre implémentation de réflexion, mais dans ce cas, utilisez-nous la réflexion pour l'automatiser avec un utilitaire d'apache

Exigences

  1. commons-beanutils, vous pouvez télécharger icihttp://commons.apache.org/beanutils/

  2. commons-loging, vous pouvez télécharger d'icihttp://commons.apache.org/logging/

  3. Éclipse

  4. JDK 1.6

2. Pratique

  1. Créez un «projet Java» dans eclipse.

  2. Nom du projet: CopyProperties, et cliquez sur le bouton "Terminer".

  3. Décompressez à la foiscommon-beanutils-xxx.zip etcommons-logging-xxx.zip.

  4. Ajoutezcommons-beanutils-xxx.jar etcommons-logging-xxx.jar au chemin de classe de votre projet.

Créer une nouvelle classe «Person» dans le packagepojo.from

package pojo.from;

public class Person {

        private String name;
        private int age;

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }

        public int getAge() {
                return age;
        }

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

}

Créer une classe «OthePerson» dans le packagepojo.to avec les mêmes champs

package pojo.to;

public class OthePerson {

        private String name;
        private int age;

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }

        public int getAge() {
                return age;
        }

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

3. Essai

Créez une classe de test dans le packagepojo.test avec la méthode main et testezcommons-beanutils.

package pojo.test;

import org.apache.commons.beanutils.BeanUtils;

import pojo.from.Person;
import pojo.to.OthePerson;

/**
 * Class for test copy properties
 *
 * @author Rene Enriquez
 * @date 23/07/2012
 *
 */
public class Test {

        /**
         * Main method
         *
         * @param args
         */
        public static void main(String[] args) throws Exception {
        Person person = new Person();
        person.setAge(15);
        person.setName("rene");

        OtherPerson othePerson = new OtherPerson();

        System.out.println("*** Before BeanUtils.copyProperties ***");

        System.out.println("Person");
        System.out.println(person.getAge());
        System.out.println(person.getName());

        System.out.println("othePerson");
        System.out.println(othePerson.getAge());
        System.out.println(othePerson.getName());

        //copy properties from (target, source)
        BeanUtils.copyProperties(othePerson, person);

        System.out.println("\n*** After BeanUtils.copyProperties ***");

        System.out.println("Person");
        System.out.println(person.getAge());
        System.out.println(person.getName());

        System.out.println("othePerson");
        System.out.println(othePerson.getAge());
        System.out.println(othePerson.getName());

    }
}

Sortie

*** Before BeanUtils.copyProperties ***
Person
15
rene
othePerson
0
null

*** After BeanUtils.copyProperties ***
Person
15
rene
othePerson
15
rene

Télécharger le code source

Téléchargez-le -CopyProperties.zip (6 Ko)