java - 为什么 BeanCopier 不能复制属性?
问题描述
我想使用 BeanCopier 在以下两个多孔之间进行属性复制
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("t_order")
public class Order extends BaseEntity {
private static final long serialVersionUID=1L;
private Long userId;
private Integer amount;
private Long productId;
}
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class OrderDTO {
private Long userId;
private Integer amount;
private Long productId;
}
对于以下代码,
public static void main(String[] args) {
Order order = Order.builder().productId(3333L).userId(9999L).amount(32).build();
OrderDTO orderDTO = new OrderDTO();
BeanCopier orderCopier = BeanCopier.create(Order.class, OrderDTO.class, false);
orderCopier.copy(order, orderDTO, null);
JSONUtils.toJSONString(orderDTO);
}
orderDTO的属性没有设置,字段orderDTO
都是null,怎么回事?
解决方案
哦,缺少简单的东西,请添加 getter 和 setter,BeanCopier 内部使用 ReflectUtils 来查找 getter 和 setter。
请尝试添加这些,然后进行测试。
还有一种选择——
您可以简单地使用 Spring 的 BeanUtils 和它的 copyProperties - 有多个选项可用
您可以简单地将其用作
BeanUtils.copyProperties( sourceBean , targetBean );
你可以在这里找到不同的例子
推荐阅读
- python - 为什么我的 json.loads() 调用不正确地格式化字符串?
- reactjs - 刷新令牌后通过调用相同的请求来处理刷新令牌
- css - 在 Xamarin.Forms 中围绕图像环绕文本
- javascript - 更改反应路由器链接的顺序
- ios - 可以在 SwiftUI 中实现“ScrollView”交互式键盘关闭吗?
- c++ - 使用插槽创建对话框
- asp.net - Windows 身份验证不适用于 Web 应用程序项目?
- bixby - 如何将收集的值传递给重新计划的操作?
- python - 编写一个 python 代码,仅使用一个循环从列表中找出最大和第二个最大数
- r - R:在循环条件下引用不同列表元素中的var