一、配置文件
在pom.xml文件中导入依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.5.Final</version>
</dependency>
二、实体类
实体类的每个字段上设置校验类别
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
@TableName("client")
public class Client {
private String type;
@NotNull(message = "客户编码不能为空")
private String clientCode;
private String name;
}
三、控制类
@Valid 和 @RequestBody 配套使用
利用BindingResult校验参数
若存在异常,则BindingResult里error会提示
import com.ddd.wms.entity.Client;
import com.ddd.wms.mapper.ClientMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.Objects;
@RestController
@RequestMapping("/test")
@Slf4j
public class ClientController {
@Autowired
private ClientMapper clientMapper;
@PostMapping("/insertClient")
public String insertClient(@Valid @RequestBody Client client, BindingResult bindingResult){
if(bindingResult.hasErrors()){
log.error("参数校验异常");
return Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage();
}
int num = clientMapper.insert(client);
return "插入成功";
}
}
四、测试
异常例子
利用Postman传入json进行测试
不传入clientCode的值,即客户编码为NULL,可以看到bindingResult中检测到了异常
正常例子