<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
/**
* 订单明细
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderDetail {
实体类属性
}
@Data
就是设置get set方法,和一些基础方法
toString
equals
hashCode
canEqual
@NoArgsConstructor
无参构造函数
@AllArgsConstructor
有参构造函数,并且是所有的
@Builder
这里@Builder就是链式编程,还算好用,看我写的一下就会这个写法
//返回的vo
OrderSubmitVO orderSubmitVO = OrderSubmitVO.builder()
.orderAmount(orders.getAmount())
.orderNumber(orders.getNumber())
.orderTime(orders.getOrderTime())
.id(orders.getId())
.build();
你想要什么类,就用这个类的.builder方法,然后是 点属性名,里边直接设置属性名,最后加一个build,很好用
有的时候,我们写stream的时候,需要set的时候返回实体类,这样就能少些一行代码
例如我没用链式编程的化,
List<OrderDetail> orderDetails = shoppingCartService.list(wrapper)
.stream()
.map((item) -> {
OrderDetail orderDetail = BeanUtil.copyProperties(item, OrderDetail.class);
orderDetail.setOrderId(orders.getId());
return orderDetail;
})
.collect(Collectors.toList());
orderDetailService.saveBatch(orderDetails);
我们把注意力放在我这里的map里边,因为我只需要设置一个属性,但是因为我要设置这一个属性我还得写三行代码,太累了,这个时候我门就在这个实体类上加注解
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class OrderDetail implements Serializable {
@Accessors(chain = true),允许链式编程,这样set之后,会返回实体类
那么改造过后的代码长这样
List<OrderDetail> orderDetails = shoppingCartService.list(wrapper)
.stream()
.map((item) -> BeanUtil.copyProperties(item, OrderDetail.class).setOrderId(orders.getId()))
.collect(Collectors.toList());
orderDetailService.saveBatch(orderDetails);
这样就能写成一行,十分nice