Lombok 记录各种用法

Lombok

基础设置

            <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,很好用

特殊设置

链式编程,set 返回实体类

有的时候,我们写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

你可能感兴趣的:(springboot,java)