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> {@Validprivate List<E> list = new LinkedList<>();@Overridepublic int size() {return list.size();}@Overridepublic boolean isEmpty() {return list.isEmpty();}@Overridepublic boolean contains(Object o) {return list.contains(o);}@Overridepublic Iterator<E> iterator() {return list.iterator();}@Overridepublic Object[] toArray() {return list.toArray();}@Overridepublic <T> T[] toArray(T[] a) {return list.toArray(a);}@Overridepublic boolean add(E e) {return list.add(e);}@Overridepublic boolean remove(Object o) {return list.remove(o);}@Overridepublic boolean containsAll(Collection<?> c) {return list.containsAll(c);}@Overridepublic boolean addAll(Collection<? extends E> c) {return list.addAll(c);}@Overridepublic boolean addAll(int index, Collection<? extends E> c) {return list.addAll(index, c);}@Overridepublic boolean removeAll(Collection<?> c) {return list.removeAll(c);}@Overridepublic boolean retainAll(Collection<?> c) {return list.retainAll(c);}@Overridepublic void clear() {list.clear();}@Overridepublic E get(int index) {return list.get(index);}@Overridepublic E set(int index, E element) {return list.set(index, element);}@Overridepublic void add(int index, E element) {list.add(index, element);}@Overridepublic E remove(int index) {return list.remove(index);}@Overridepublic int indexOf(Object o) {return list.indexOf(o);}@Overridepublic int lastIndexOf(Object o) {return list.lastIndexOf(o);}@Overridepublic ListIterator<E> listIterator() {return list.listIterator();}@Overridepublic ListIterator<E> listIterator(int index) {return list.listIterator(index);}@Overridepublic 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