pom.xml 引入
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
校验实体类注解
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown=true)
public class ThirdAlarmInfoRequest {
/**
* 报警id
*/
@NotNull(message = "报警id为空",groups = {Add.class})
private Long alarmId;
/**
* 报警时间
*/
@NotNull(message = "报警时间为空",groups = {Add.class})
private Date alarmTime;
/**
* 报警州市
*/
@org.hibernate.validator.constraints.NotBlank(message = "报警州市为空",groups = {Add.class})
// @NotBlank(message = "报警州市为空",groups = {Add.class})
private String alarmCity;
接口校验方式一
@PostMapping("/batchAdd")
public RestResult batchAdd(@Validated(Add.class) @RequestBody ValidList<ThirdAlarmInfoRequest> alarmRequest) throws BusinessException {
logger.info("thirdAlarmInfoController.batchAdd.param:{}", JSONObject.toJSONString(alarmRequest));
Long rows = thirdAlarmInfoService.batchAdd(alarmRequest);
return RestResult.createSuccessfulResult(rows);
}
import javax.validation.Valid;
import java.util.*;
/**
* @author
* @describe:
* @date 2025/3/19
*/
public class ValidList <E> implements List<E> {
@Valid
private List<E> list = new LinkedList<>();
@Override
public int size() {
return list.size();
}
@Override
public boolean isEmpty() {
return list.isEmpty();
}
@Override
public boolean contains(Object o) {
return list.contains(o);
}
@Override
public Iterator<E> iterator() {
return list.iterator();
}
@Override
public Object[] toArray() {
return list.toArray();
}
@Override
public <T> T[] toArray(T[] a) {
return list.toArray(a);
}
@Override
public boolean add(E e) {
return list.add(e);
}
@Override
public boolean remove(Object o) {
return list.remove(o);
}
@Override
public boolean containsAll(Collection<?> c) {
return list.containsAll(c);
}
@Override
public boolean addAll(Collection<? extends E> c) {
return list.addAll(c);
}
@Override
public boolean addAll(int index, Collection<? extends E> c) {
return list.addAll(index, c);
}
@Override
public boolean removeAll(Collection<?> c) {
return list.removeAll(c);
}
@Override
public boolean retainAll(Collection<?> c) {
return list.retainAll(c);
}
@Override
public void clear() {
list.clear();
}
@Override
public E get(int index) {
return list.get(index);
}
@Override
public E set(int index, E element) {
return list.set(index, element);
}
@Override
public void add(int index, E element) {
list.add(index, element);
}
@Override
public E remove(int index) {
return list.remove(index);
}
@Override
public int indexOf(Object o) {
return list.indexOf(o);
}
@Override
public int lastIndexOf(Object o) {
return list.lastIndexOf(o);
}
@Override
public ListIterator<E> listIterator() {
return list.listIterator();
}
@Override
public ListIterator<E> listIterator(int index) {
return list.listIterator(index);
}
@Override
public List<E> subList(int fromIndex, int toIndex) {
return list.subList(fromIndex, toIndex);
}
public List<E> getList() {
return list;
}
public void setList(List<E> list) {
this.list = list;
}
}
接口校验方式二
/**
* 批量新增三方报警数据
*/
@PostMapping("/batchAdd")
public RestResult batchAdd(@RequestBody List<ThirdAlarmInfoRequest> alarmRequest) throws BusinessException {
validateList(alarmRequest, Add.class);
logger.info("thirdAlarmInfoController.batchAdd.param:{}", JSONObject.toJSONString(alarmRequest));
Long rows = thirdAlarmInfoService.batchAdd(alarmRequest);
return RestResult.createSuccessfulResult(rows);
}
/**
* 校验List,逐个校验每个元素
*
* @param list 校验的参数
* @param clazz 检验分组 可传多个
*/
public void validateList(List<?> list, Class<?>... clazz) throws BusinessException {
StringBuilder errorMessage = new StringBuilder("列表校验失败:");
// 遍历列表,逐个校验每个元素
for (Object element : list) {
// 校验元素本身
Set<ConstraintViolation<Object>> violations = validator.validate(element, clazz);
// 收集错误信息
if (!violations.isEmpty()) {
for (ConstraintViolation<Object> violation : violations) {
errorMessage.append(violation.getMessage()).append(" ");
}
}
}
// 如果有校验错误,抛出异常
if (errorMessage.length() > "列表校验失败:".length()) {
// throw new IllegalArgumentException(errorMessage.toString());
throw new BusinessException(ResultCodeEnum.ILLEGAL_PARAM.getCode(),errorMessage.toString());
}
}
参考:
参数校验:https://blog.csdn.net/Ying_ph/article/details/142938025?fromshare=blogdetail&sharetype=blogdetail&sharerId=142938025&sharerefer=PC&sharesource=johnrui&sharefrom=from_link
参数校验:https://blog.csdn.net/qq_27298687/article/details/104423409
jy: https://blog.csdn.net/weixin_43264955/article/details/144430279?fromshare=blogdetail&sharetype=blogdetail&sharerId=144430279&sharerefer=PC&sharesource=johnrui&sharefrom=from_link