java怎么将实体类(Entity)与DTO进行转换 实现Entity与DTO对象之间的转换方法

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

java怎么将实体类(entity)与dto进行转换 实现entity与dto对象之间的转换方法

在Java开发中,Entity(实体类)通常用于表示数据库中的表结构,而DTO(Data Transfer Object)用于接口数据传输。为了避免直接暴露Entity给前端或跨层传递,需要将Entity转换为DTO。以下是几种常见的实现方式。

1. 手动set/get方法转换

最基础的方式是通过手动调用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());

2. 使用MapStruct(推荐)

MapStruct 是一个注解处理器,编译时生成类型安全的映射代码,性能高且减少样板代码。

添加依赖(Maven):

  org.mapstruct

  mapstruct

  1.5.2.Final

定义映射接口:

import org.mapstruct.Mapper;

闪念贝壳 闪念贝壳

闪念贝壳是一款AI 驱动的智能语音笔记,随时随地用语音记录你的每一个想法。

闪念贝壳 218 查看详情 闪念贝壳

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);

3. 使用ModelMapper

ModelMapper 是一个自动映射框架,能智能匹配属性名,适合快速开发。

添加依赖:

  org.modelmapper

  modelmapper

  3.1.0

使用示例:

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));

4. 使用BeanUtils(如Spring BeanUtils 或 Apache Commons)

适用于字段名称完全一致的情况,简单但功能有限。

示例(Spring BeanUtils):

import org.springframework.beans.BeanUtils;

UserDTO dto = new UserDTO();

BeanUtils.copyProperties(userEntity, dto);

注意:只复制同名属性,不支持复杂类型或字段重命名。

基本上就这些常用方式。小项目可用手动或BeanUtils;中大型项目建议用 MapStruct,性能好、易维护。选择哪种方式取决于项目复杂度和性能要求。

以上就是java怎么将实体类(Entity)与DTO进行转换 实现Entity与DTO对象之间的转换方法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/981426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
999元每月!北京联通首个万兆宽带用户来了:这上下行网速太夸张
上一篇 2025年12月1日 20:35:49
李彦宏断言:人工智能即将改变世界
下一篇 2025年12月1日 20:35:50

相关推荐

发表回复

登录后才能评论
关注微信