一、校验的对象为单个实体时
创建一个入参对象,要在不为空的属性上面,加上@NotNull注解
package com.citicsc.galaxy.finance.lq;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
/**
* @ClassName TraAccBillReq
* @Description TODO
* @Author houbing
* @Date 2023/9/11 10:07
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TraAccBillReq {
@NotNull(message = "日期不为空")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private Date tradingDay;
private List<String> accountTypes;
}
在controller代码如下,同时在controller层上面加上@Validated注解
@ApiOperation(value = "查询对账单数据明细")
@PostMapping("/queryBillDetails")
public BillDetails queryBillDetails(@RequestBody @Validated TraAccBillReq req){
// tradingDay 日期
return lqAppService.queryBillDetails(req, true);
}
在方法参数里面加上@Validated注解,就可以校验了。
二、校验的对象为list的时候
首先创建一个校验的对象
package com.citicsc.galaxy.finance.lq;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
/**
* @ClassName TradeAccountBillReq
* @Description TODO
* @Author houbing
* @Date 2023/8/17 16:39
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TradeAccountBillReq {
@NotNull(message = "id不能为空")
private String id;
private String remark;
}
然后再包装一层
package com.citicsc.galaxy.finance.lq;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* @ClassName TradeAccountBillReqDTO
* @Description TODO
* @Author houbing
* @Date 2023/9/14 9:19
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TradeAccountBillReqDTO {
@Valid
@NotEmpty(message = "参数为空")
private List<TradeAccountBillReq> reqs;
}
这时,在controller层里面代码如下,注意的是,这里用的@Valid注解,这个注解可以嵌套检查入参对象不为空的属性
@ApiOperation(value = "确认数据")
@PostMapping("/reconciliatizeAccountBill")
public void reconciliatizeAccountBill(@RequestBody @Valid TradeAccountBillReqDTO reqDTO) throws SQLException {
lqAppService.reconciliatizeAccountBill(reqDTO);
}
这里面的前提是,你的代码中做过全局的异常捕获