从简单的 java 对象 (POJO) 进行 getter 到 setter 映射的好方法是什么?可以使用反射吗?

And*_*ild 1 java mapping reflection pojo

您好,我有两个 java 对象,它们彼此独立,但共享相同的gettersetter方法。例如,我有一个UserEntityUserDTO对象,我会将 UserEntity 中的所有 getter 值映射到 UserDTO 的所有 setter。

做此类事情的最佳方法是什么?我更喜欢用 java 反射来实现,但我现在也想看看外面是否有一些有用的框架实现。

Chr*_*örz 6

有一个很棒的映射器库,称为MapStruct,可以用来进行映射。

以下是 UserEntity 和 UserDTO 的示例:

@Mapper
public interface UserMapper {

    UserMapper INSTANCE = Mappers.getMapper(UserMapper.class);

    @Mapping
    UserDTO userEntityToUserDTO(UserEntity user); 
}

UserDTO userDto = UserMapper.INSTANCE.userEntityToUserDTO(userEntity);
Run Code Online (Sandbox Code Playgroud)

它还支持兼容类型之间的转换,如果字段命名不同,还可以设置自定义映射。例如:

@Mapping(source = "userName", target = "name")
Run Code Online (Sandbox Code Playgroud)