Java_实体类(Entity)转换VO

这篇博客介绍了如何利用MapStruct库实现不同Java类之间的属性映射,即使属性名称不一致也能轻松赋值。通过引入MapStruct依赖,定义映射接口,并使用注解指定源目标字段,可以方便地将Entity对象转换为EntityVo对象,适用于单个或集合对象的转换,简化了代码并提高了效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:前提是属性名一致,如果两个类属性名不一致,赋值不上了

// 将实体类Entity属性赋值给EntityVo
BeanUtils.copyProperties(Entity,EntityVo);

方法二:如果两个类的属性值不同,可以用下面的赋值,
除了单个对象,集合对象也是可以的。
还可以两个对象合并成一个对象。
1、POM依赖

    <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-jdk8</artifactId>
            <version>1.2.0.CR1</version>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>1.2.0.CR1</version>
        </dependency>

2 、自定义接口

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

@Mapper
// 注意导入的是 mapstruct包
public interface EntityMapper {
    EntityMapper mapper = Mappers.getMapper(EntityMapper.class);
	// 映射关系注解
    @Mappings({
            @Mapping(source="entytyId",target = "id"),
            @Mapping(source="entytyName",target = "name"),
            @Mapping(source="entytyAge",target = "age")
    })
    EntityVo Entity2Vo(Entity entity);
}

3、调用接口进行赋值

EntityVo entityVo = EntityMapper .mapper.Entity2Vo(entity);
System.out.println(entityVo );
### Java 中数据库数据映射到实体类 VO 的方法 在 Java 开发中,将数据库中的数据映射到实体类并进一步转化为 VO(值对象),是一种常见需求。以下是具体实现方式及其相关技术说明。 #### 使用 JPA 或 MyBatis 进行数据库查询并将结果映射至实体类 JPA 和 MyBatis 是两种常用的 ORM 工具,可以轻松完成从数据库表到 Java 实体类的映射操作。假设有一个 `NursingProject` 表,其对应的实体类如下: ```java @Entity @Table(name = "nursing_project") public class NursingProject { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private Double price; private String remark; // Getters and Setters } ``` 当通过 JPA 查询该表时,可以直接返回 `List<NursingProject>` 类型的结果集[^1]。 --- #### 将实体类转换VO 值对象 为了满足前端展示的需求,通常需要将上述实体类 `NursingProject` 转换为专门设计的 VO 对象。例如,创建一个名为 `NursingProjectVo` 的类: ```java public class NursingProjectVo { private String name; private Double price; private String remark; // Getters and Setters } ``` 此时可以通过手动编写转换逻辑或将工具引入项目来简化这一过程。 --- #### 手动编写的简单示例 如果仅涉及少量字段,则可采用简单的 getter/setter 方法进行转换: ```java public static List<NursingProjectVo> convertToVos(List<NursingProject> entities) { List<NursingProjectVo> vos = new ArrayList<>(); for (NursingProject entity : entities) { NursingProjectVo vo = new NursingProjectVo(); vo.setName(entity.getName()); vo.setPrice(entity.getPrice()); vo.setRemark(entity.getRemark()); vos.add(vo); } return vos; } ``` 这种方式虽然直观易懂,但在字段较多的情况下显得冗余且容易出错[^3]。 --- #### 利用 MapStruct 自动生成映射代码 MapStruct 可显著提升开发效率,尤其适用于复杂的对象间映射场景。首先,在 Maven 项目的依赖文件中加入以下配置: ```xml <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>1.5.3.Final</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>1.5.3.Final</version> <scope>provided</scope> </dependency> ``` 接着定义一个接口用于描述两者的映射关系: ```java @Mapper(componentModel = "spring") public interface NursingProjectMapper { NursingProjectMapper INSTANCE = Mappers.getMapper(NursingProjectMapper.class); NursingProjectVo toVo(NursingProject entity); List<NursingProjectVo> toVoList(List<NursingProject> entities); } ``` 运行构建工具后,MapStruct 会自动生成具体的实现类,并提供高效的映射功能[^2]。 调用此接口即可快速完成转换: ```java List<NursingProject> entities = nursingProjectRepository.findAll(); // 获取所有记录 List<NursingProjectVo> vos = NursingProjectMapper.INSTANCE.toVoList(entities); // 自动映射 ``` --- #### 总结 以上展示了如何利用传统方法与现代框架相结合的方式,高效地将数据库数据映射至实体类再转化成 VO 值对象的过程。无论是基础的手工编码还是借助像 MapStruct 这样的自动化工具,开发者都能找到适合自己的解决方案以优化工作流程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值