34

我有两个具有相同属性名称的 java 类。如何将所有属性复制到另一个填充数据的 bean。我不想使用传统形式复制属性,因为我有很多属性。

提前致谢。

1班

@ManagedBean
@SessionScoped
public class UserManagedBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private String userSessionId;
    private String userId;
    private String name;
    private String adress;
    ......................

2班

public class UserBean {

    private String userSessionId;
    private String userId;
    private String name;
   ....................
4

4 回答 4

73

使用BeanUtils

import org.apache.commons.beanutils.BeanUtils;

UserBean newObject = new UserBean(); 
BeanUtils.copyProperties(newObject, oldObject);
于 2013-11-04T11:17:03.157 回答
5

查看Dozer 框架——它是一个对象到对象的映射框架。这个想法是:

  • 通常它会按照惯例进行映射。
  • 您可以使用映射文件覆盖此约定。

. . 因此映射文件尽可能紧凑。它在许多情况下都很有用,例如将用例指定的服务负载映射到可重用的核心模型对象上。

在提供 SpringSource 培训课程时,我们经常会指出这个框架。

编辑:

这些天尝试MapStruct

于 2013-11-04T05:11:43.273 回答
1

如果您使用 Apache 的库 BeanUtils,您可以轻松地做到这一点:

http://commons.apache.org/proper/commons-beanutils/

特别是看copyProperties(Object, Object)

http://commons.apache.org/proper/commons-beanutils/apidocs/org/apache/commons/beanutils/BeanUtils.html#copyProperties(java.lang.Object , java.lang.Object)

对于属性名称相同的所有情况,将属性值从源 bean 复制到目标 bean。

于 2013-11-04T02:14:19.260 回答
0

使用 java 反射来设置和获取属性值。有 spring bean 属性 util 可以访问属性值。我会向你推荐java反射。

于 2013-11-04T02:17:11.590 回答