lombok插件

前言:
在开发中,我们写的代码肯定是越少越好,代码层次越清晰越好。那么下面就介绍一些可以减少代码量、可以让结构更清晰的好东西。本文涉及vo、dto的使用、全局异常处理、表单验证以及一些小工具的使用。
一、lombok的使用:
lombok是一个可以减少代码量的小工具,使用非常简单,只需要添加如下依赖:

org.projectlombok
lombok

如果开发工具为idea,那么再安装一下lombok插件即可。安装方法:
setting —> plugins —> browse repositories,然后搜索lombok。

image.png

如果开发工具是eclipse,安装lombok插件就麻烦一些,百度上有很多教程,此处就不再搬运了。
添加了依赖,安装好了插件,就可以使用了。下面主要介绍它的两个注解。
1、@Data:
我们在写实体类时,每个实体类都要写set、get方法以及toString方法等,虽然编辑器可以自动生成,但还是有些麻烦,而且大量的set、get方法使代码看起来不清爽。那么可以使用@Data来搞定。在实体类上加上此注解,就相当于写了set、get、toString、equals等方法。
@Entity
@Data
public class OrderDetail {
@Id
private String detailId;
private String orderId;
private String productId;
private String productName;
private BigDecimal productPrice;
private Integer productQuantity;
private String productIcon;
}

这样的代码看起来就干净清爽多了。
2、@Slf4j:
这也是一个常用的注解。一般我们需要用日志都会像下面这样写:
Logger log = (Logger) LoggerFactory.getLogger(当前类.class);
log.error("【查询商品】商品不存在,productId={}",productId);

而加了这个注解,就不用自己创建log对象了,要用时直接用log调用对应方法就行了。
log.error("【查询商品】商品不存在,productId={}",productId);

关于lombok还有好多注解,暂且先介绍这两个常用的。
二、createTime和updateTime问题:
一般的表中,我们都会加上createTime和updateTime两个字段。然后有记录存入数据库时,要实体.setCreateTime(new Date())来赋值,更新时就要实体.setUpdateTime(new Date())。每次有新增记录或有更新时都要这样set一下,有些麻烦。其实这两个时间字段可以交给数据库管理。建表时createTime和updateTime字段这样写:
create table ‘product_category’(

create_time timestamp not null default current_timestamp comment ‘创建时间’,
update_time timestamp not null default current_timestamp
on update current_timestamp comment ‘修改时间’,

)

然后在对应的实体类上加@DynamicUpdate注解即可实现这两个字段的自动更新。创建时不用setCreateTime,更新时也不用setUpdateTime了。
@Entity
@DynamicUpdate // 动态更新
@Data
public class ProductCategory {

private Date createTime;
private Date updateTime;
}

三、枚举类的使用:
关于枚举类,我之前只是在学Java基础的时候了解过,后来老师教的一些demo中都没用到过,最近看的一个项目用到了,在此记录其用法。先看下面的代码:
@Entity
@Data
public class ProductInfo {

private Integer productStatus;//商品状态(0正常,1下架)
}

有一个商品类,productStatus是其状态,0是上架,1是下架。如果现在要查询所有上架商品,那么做法如下:
List productInfoList =
productInfoRepository.findByProductStatus(0);

这里可能看得还挺清楚,0表示上架,查询上架的,那么就是productStatus = 0 的,所以传入0即可。但是在项目中,实体类一多,用0和1表示的东西一多,就很容易搞错,到时候自己都要看半天才知道0代表什么1代表什么。这种情况就可以用枚举类来处理。新建一个ProductStatusEnum枚举类:
@Getter
public enum ProductStatusEnum {
UP(0,“上架”),
DOWN(1,“下架”)
;
private Integer code;
private String message;
ProductStatusEnum(Integer code,String message) {
this.code = code;
this.message = message;
}
}

那么查询方法就可以这样写了:
List productInfoList =
productInfoRepository.findByProductStatus(ProductStatusEnum.UP.getCode());

ProductStatusEnum.UP.getCode()就是0,这样一看就知道是查上架的商品。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值