答案:Java中Entity转DTO常用方式包括手动set/get、MapStruct、ModelMapper和BeanUtils,其中MapStruct因性能好、类型安全被推荐用于中大型项目。

在Java开发中,Entity(实体类)通常用于表示数据库中的表结构,而DTO(Data Transfer Object)用于接口数据传输。为了避免直接暴露Entity给前端或跨层传递,需要将Entity转换为DTO。以下是几种常见的实现方式。
最基础的方式是通过手动调用setter和getter进行赋值,适用于字段较少、转换逻辑简单的场景。
示例:
Entity:
立即学习“Java免费学习笔记(深入)”;
public class UserEntity {
private Long id;
private String name;
private String email;
// getter 和 setter 省略
}
DTO:
public class UserDTO {
private Long id;
private String name;
private String displayEmail;
// getter 和 setter 省略
}
转换代码:
UserDTO dto = new UserDTO();
dto.setId(entity.getId());
dto.setName(entity.getName());
dto.setDisplayEmail("邮箱: " + entity.getEmail());
MapStruct 是一个注解处理器,编译时生成类型安全的映射代码,性能高且减少样板代码。
添加依赖(Maven):
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.5.2.Final</version>
</dependency>
定义映射接口:
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
@Mapper
public interface UserMapper {
UserMapper INSTANCE = Mappers.getMapper(UserMapper.class);
@Mapping(source = "email", target = "displayEmail")
UserDTO toDTO(UserEntity entity);
}
使用:
UserDTO dto = UserMapper.INSTANCE.toDTO(userEntity);
ModelMapper 是一个自动映射框架,能智能匹配属性名,适合快速开发。
添加依赖:
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>3.1.0</version>
</dependency>
使用示例:
ModelMapper mapper = new ModelMapper();
// 自动映射同名字段
UserDTO dto = mapper.map(userEntity, UserDTO.class);
可配置自定义映射规则:
mapper.createTypeMap(UserEntity.class, UserDTO.class)
.addMapping(src -> src.getEmail(), (dest, v) -> dest.setDisplayEmail("邮箱:" + v));
适用于字段名称完全一致的情况,简单但功能有限。
示例(Spring BeanUtils):
import org.springframework.beans.BeanUtils;
UserDTO dto = new UserDTO();
BeanUtils.copyProperties(userEntity, dto);
注意:只复制同名属性,不支持复杂类型或字段重命名。
基本上就这些常用方式。小项目可用手动或BeanUtils;中大型项目建议用 MapStruct,性能好、易维护。选择哪种方式取决于项目复杂度和性能要求。
以上就是java怎么将实体类(Entity)与DTO进行转换 实现Entity与DTO对象之间的转换方法的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号