首页 > Java > java教程 > 正文

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

月夜之吻
发布: 2025-11-12 19:17:58
原创
252人浏览过
答案: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):

<dependency>

  <groupId>org.mapstruct</groupId>

  <artifactId>mapstruct</artifactId>

  <version>1.5.2.Final</version>

</dependency>

定义映射接口:

import org.mapstruct.Mapper;

Swapface人脸交换
Swapface人脸交换

一款创建逼真人脸交换的AI换脸工具

Swapface人脸交换 45
查看详情 Swapface人脸交换

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 是一个自动映射框架,能智能匹配属性名,适合快速开发。

添加依赖:

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

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对象之间的转换方法的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号