1. 导入pom.xml。一般springboot项目都会导入
因为hibernate在spring-boot-starter-web中(如图),故导入以下坐标即可
org.springframework.boot spring-boot-starter-web
2. 在需要验证的实体类的字段上加上相应注释验证
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.*;
import java.util.Date;
@ApiModel(value="用户对象", description="从客户端,由用户传入的数据封装在此entity中")
public class CenterUserBO {
@ApiModelProperty(value="用户名", name="username", example="json", required = false)
private String username;
@ApiModelProperty(value="密码", name="password", example="123456", required = false)
private String password;
@ApiModelProperty(value="确认密码", name="/confirm/iPassword", example="123456", required = false)
private String /confirm/iPassword;
@NotBlank(message = "用户昵称不能为空")
@Length(max = 12, message = "用户昵称不能超过12位")
@ApiModelProperty(value="用户昵称", name="nickname", example="杰森", required = false)
private String nickname;
@Length(max = 12, message = "用户真实姓名不能超过12位")
@ApiModelProperty(value="真实姓名", name="realname", example="杰森", required = false)
private String realname;
@Pattern(regexp = "^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$", message = "手机号格式不正确")
@ApiModelProperty(value="手机号", name="mobile", example="13999999999", required = false)
private String mobile;
@Email
@ApiModelProperty(value="邮箱地址", name="email", example="imooc@imooc.com", required = false)
private String email;
@Min(value = 0, message = "性别选择不正确")
@Max(value = 2, message = "性别选择不正确")
@ApiModelProperty(value="性别", name="sex", example="0:女 1:男 2:保密", required = false)
private Integer sex;
@ApiModelProperty(value="生日", name="birthday", example="1900-01-01", required = false)
private Date birthday;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String get/confirm/iPassword() {
return /confirm/iPassword;
}
public void set/confirm/iPassword(String /confirm/iPassword) {
this.confirmPassword = /confirm/iPassword;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getRealname() {
return realname;
}
public void setRealname(String realname) {
this.realname = realname;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "CenterUserBO{" +
"username='" + username + ''' +
", password='" + password + ''' +
", confirmPassword='" + confirmPassword + ''' +
", nickname='" + nickname + ''' +
", realname='" + realname + ''' +
", mobile='" + mobile + ''' +
", email='" + email + ''' +
", sex=" + sex +
", birthday=" + birthday +
'}';
}
}
3. 使用@Valid开启验证
@Api(value = "用户信息接口", tags = {"用户信息接口相关接口"})
@RestController
@RequestMapping("userInfo")
public class CenterUserController {
@Autowired
private CenterUserService centerUserService;
@ApiOperation(value = "修改用户信息", notes = "修改用户信息")
@PostMapping("/update")
public JSonResult userInfo(
@ApiParam(name = "userId", value = "用户id", required = true)
@RequestParam String userId,
@RequestBody @Valid CenterUserBO centerUserBO,
BindingResult result,
HttpServletRequest request,
HttpServletResponse response){
//判断BindingResult是否保存错误的验证信息,如果有,直接return
if (result.hasErrors()){
Map errorMap = getErrors(result);
return JSONResult.errorMap(errorMap);
}
Users userResult = centerUserService.updateUserInfo(userId, centerUserBO);
userResult = setNullProperty(userResult);
cookieUtils.setcookie(request, response, "user", JsonUtils.objectToJson(userResult),true);
//TODO 后续要改,增加令牌token,会整合进redis,分布式会话
return JSONResult.ok();
}
private Map getErrors(BindingResult result){
Map map = new HashMap<>();
List errorList = result.getFieldErrors();
for (FieldError error : errorList) {
//发生验证错误所对应的某一个属性
String errorField = error.getField();
//验证错误的信息
String errorMsg = error.getDefaultMessage();
map.put(errorField, errorMsg);
}
return map;
}
}
4. 结果



