java两个结构类似的对象复制内容

本文介绍了Java中复制对象的三种方式:Spring的BeanUtils.copyProperties, Dozer的Mapper.map以及自定义的CopyUtils.copyProperties。在不同场景下,这些方法各有特点,例如Dozer在类型转换上的支持,但不支持枚举值复制,而其他两种方法则可以处理枚举。同时,文章提到自定义复制方法在简单对象复制上可能更快。" 80324911,7641378,Python面向对象编程:单例模式与工厂模式,"['Python编程', '面向对象', '设计模式', '类与对象']

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

1、org.springframework.beans.BeanUtils#copyProperties
public User addUser(@ModelAttribute inDto dto) {
	User user= new User();
	BeanUtils.copyProperties(dto, user);
	return userService.addUser(user);
}

注意:需要copy的属性名称、大小写、类型要一致

2、com.github.dozermapper.core.Mapper#map
private Mapper mapper;

public User addUser(@ModelAttribute inDto dto) {
	User user= mapper.map(dto, User.class);
	return userService.addUser(user);
}

类型不一致时,如int和String类型可互相转化。
但是!mapper.map不支持枚举值复制!
其他两种方法支持枚举值

3、jp.co.sng.activecity.acdms.domain.utils.CopyUtils#copyProperties
public User addUser(@ModelAttribute inDto dto) {
	User user= new User();
	CopyUtils.copyProperties(dto, user);
	return userService.addUser(user);
}

注意:

前提:如果dtoFrom和dtoTo本身都有值,dtoFrom中的A属性为null,dtoTo中A属性不为null(假设值为1)。
使用BeanUtils.copyProperties(dtoFrom, dtoTo)后,A为null。
使用mapper.map(dtoFrom, dtoTo)后,A为1。
使用CopyUtils.copyProperties(dtoFrom, dtoTo)后,A为1。

自己构建copy方法:

若只是简单的复制对象,这篇文章的实践速度比dozer快
https://blog.csdn.net/zla85/article/details/48317831

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值