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

相关推荐

  1. Lombok 记录各种

    2024-01-29 01:10:03       58 阅读
  2. 记录 | python isinstance()

    2024-01-29 01:10:03       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-29 01:10:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-29 01:10:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-29 01:10:03       82 阅读
  4. Python语言-面向对象

    2024-01-29 01:10:03       91 阅读

热门阅读

  1. 第九章 SQL Search REST 接口

    2024-01-29 01:10:03       46 阅读
  2. Android 自定义builder对话框

    2024-01-29 01:10:03       62 阅读
  3. 如何把word檔案自動化

    2024-01-29 01:10:03       51 阅读
  4. 机器学习面试题总结60-99

    2024-01-29 01:10:03       54 阅读
  5. 我来啦,我又来啦

    2024-01-29 01:10:03       43 阅读
  6. 按键控制LED灯

    2024-01-29 01:10:03       46 阅读
  7. HTML — 框架 iframe

    2024-01-29 01:10:03       59 阅读
  8. 事件的学习

    2024-01-29 01:10:03       44 阅读
  9. lc31 下一个排列

    2024-01-29 01:10:03       51 阅读