前言:
在开发中,我们写的代码肯定是越少越好,代码层次越清晰越好。那么下面就介绍一些可以减少代码量、可以让结构更清晰的好东西。本文涉及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等方法。
这样的代码看起来就干净清爽多了。
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字段这样写:
然后在对应的实体类上加@DynamicUpdate注解即可实现这两个字段的自动更新。创建时不用setCreateTime,更新时也不用setUpdateTime了。
三、枚举类的使用:
关于枚举类,我之前只是在学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枚举类:
那么查询方法就可以这样写了:
List productInfoList =
productInfoRepository.findByProductStatus(ProductStatusEnum.UP.getCode());
ProductStatusEnum.UP.getCode()就是0,这样一看就知道是查上架的商品。