web-dev-qa-db-fra.com

Copier des champs spécifiques en utilisant BeanUtils.copyProperties?

springframework.beans.BeanUtils est très utile pour copier des objets, et j'utilise fréquemment l'option "ignoreProperties". Cependant, je souhaite parfois ne copier que des objets spécifiques (fondamentalement, le contraire de "ignorer les propriétés"). Est-ce que quelqu'un sait comment puis-je faire cela? Toute aide serait appréciée.

import org.springframework.beans.BeanUtils;

public class Sample {    
    public static void main(String[] args) {    
        DemoADto demoADto = new DemoADto();
        demoADto.setName("Name of Demo A");
        demoADto.setAddress("Address of Demo A");

        DemoBDto demoBDto = new DemoBDto();

        // This is "ignoreProperties" option
        // But I want to know how I can copy only name field by using BeanUtils or something.
        BeanUtils.copyProperties(demoADto, demoBDto, new String[] {"address"});

        System.out.println(demoBDto.getName());
        System.out.println(demoBDto.getAddress());    
    }    
}

public class DemoADto {    
    private String name;    
    private String address;

    public String getName() {
        return name;
    }

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

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }    
}

public class DemoBDto {    
    private String name;    
    private String address;

    public String getName() {
        return name;
    }

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

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }    
}
33
zono

Si vous ne voulez pas utiliser Commons BeanUtils, vous pouvez toujours utiliser Spring en utilisant le BeanWrapper .

Vous devrez parcourir manuellement toutes les propriétés pour créer une méthode d'assistance statique.

Vous pouvez toujours copier ce que copyProperties fait et l’ajuster à votre guise: http://tinyurl.com/BeanUtils-copyProperties

3
Adam Gent

Découvrez ceci: BeanPropertyCopyUtil .

Exemple:

copyProperties(user, systemUser, "first firstName", "last lastName");

Vous aurez également besoin d'Apache Commons BeanUtils.

2
eolith

Vous pouvez utiliser org.springframework.beans.BeanUtils.copyProperties (Source de l'objet, Cible de l'objet, Classe modifiable) lève l'exception Beans

Assurez-vous que la cible implémente l'interface éditable qui définit les propriétés à copier.

0
Gautam Pal

Voici un exemple avec la classe Spring BeanUtils:

public static void copyList(List sourceList,
        List targetList, Class targetType) {

    try {

        for (Object source : sourceList) {
            Object target = null;
            target = targetType.newInstance();
            BeanUtils.copyProperties(source, target);
            targetList.add(target);
        }

    } catch (InstantiationException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
}
0