Java 实体类转实体类

在Java中,实体类之间的转换是一种常见的操作。有时候我们需要将一个实体类的属性复制到另一个实体类中,或者将多个实体类的属性合并到一个实体类中。本文将介绍几种常见的实体类转换方法,并提供相应的代码示例。

1. 手动复制属性

最简单的实体类转换方法就是手动复制属性。这种方法适用于实体类之间的属性比较简单,且数量较少的情况。

public class User {
    private String name;
    private int age;

    // getters and setters
}

public class UserDTO {
    private String name;
    private int age;

    // getters and setters
}

public class EntityConverter {
    public static UserDTO convertToDTO(User user) {
        UserDTO userDTO = new UserDTO();
        userDTO.setName(user.getName());
        userDTO.setAge(user.getAge());
        return userDTO;
    }

    public static User convertToEntity(UserDTO userDTO) {
        User user = new User();
        user.setName(userDTO.getName());
        user.setAge(userDTO.getAge());
        return user;
    }
}

在上面的示例中,我们通过手动调用getter和setter方法,将User类和UserDTO类之间的属性进行复制。

2. 使用BeanUtils

Apache Commons BeanUtils是一个常用的Java工具类库,提供了很多方便的方法来操作Bean对象。其中之一就是复制属性的方法BeanUtils.copyProperties()

import org.apache.commons.beanutils.BeanUtils;

public class EntityConverter {
    public static UserDTO convertToDTO(User user) {
        UserDTO userDTO = new UserDTO();
        try {
            BeanUtils.copyProperties(userDTO, user);
        } catch (Exception e) {
            // handle exception
        }
        return userDTO;
    }

    public static User convertToEntity(UserDTO userDTO) {
        User user = new User();
        try {
            BeanUtils.copyProperties(user, userDTO);
        } catch (Exception e) {
            // handle exception
        }
        return user;
    }
}

上述代码使用了BeanUtils.copyProperties()方法来复制实体类之间的属性。该方法会遍历源实体类的属性,并将其复制到目标实体类中。需要注意的是,属性名和类型必须一致,否则可能会出现异常。

3. 使用ModelMapper

ModelMapper是一个功能强大的Java库,用于实体类之间的映射和转换。它支持复杂的转换规则和自定义映射。

首先,我们需要在项目中引入ModelMapper的依赖:

<dependency>
    <groupId>org.modelmapper</groupId>
    <artifactId>modelmapper</artifactId>
    <version>2.4.4</version>
</dependency>

然后,我们可以使用ModelMapper来进行实体类之间的转换:

import org.modelmapper.ModelMapper;

public class EntityConverter {
    private static ModelMapper modelMapper = new ModelMapper();

    public static UserDTO convertToDTO(User user) {
        UserDTO userDTO = modelMapper.map(user, UserDTO.class);
        return userDTO;
    }

    public static User convertToEntity(UserDTO userDTO) {
        User user = modelMapper.map(userDTO, User.class);
        return user;
    }
}

上述代码使用了ModelMapper的map()方法来进行实体类之间的转换。ModelMapper会根据属性名和类型进行自动映射,并支持自定义的转换规则。

总结

本文介绍了几种常见的Java实体类转换方法,包括手动复制属性、使用BeanUtils和使用ModelMapper。这些方法适用于不同的场景和需求,开发者可以根据自己的实际情况选择合适的方法。

需要注意的是,在进行实体类转换时,应该确保属性名和类型的一致性,避免出现错误和异常。此外,对于复杂的转换规则,可以使用ModelMapper等专用库来简化代码和提高效率。

希望本文对你理解和应用实体类转换有所帮助!