我想使用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
的字段均为空,这是怎么回事? 最佳答案
哦,缺少一些简单的东西,请添加getters和setters,BeanCopier在内部使用ReflectUtils查找getters和setters。
请尝试添加这些内容,然后进行测试。
还有另一种选择-
您可以简单地使用Spring的BeanUtils及其copyProperties-有多个选项
Spring BeanUtils
您可以简单地将其用作
BeanUtils.copyProperties( sourceBean , targetBean );
您可以找到不同的示例HERE