我想使用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

08-04 07:53