springboot实体类参数验证

编程

springboot使用hibernate 进行参数验证

1.实体类

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="confirmPassword", example="123456", required = false)

private String confirmPassword;

@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@", required = false)

private String email;

@Min(value = 0, message = "性别选择不正确")// 0已下

@Max(value = 2, message = "性别选择不正确")// 2以上

@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 getConfirmPassword() {

return confirmPassword;

}

public void setConfirmPassword(String confirmPassword) {

this.confirmPassword = confirmPassword;

}

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 +

"}";

}

}

 

 

2.controller类中

2.1   @Valid 需要添加 主要进行验证

2.2   BindingResult result  这里result 接受参数

@ApiOperation(value = "修改用户信息", notes = "修改用户信息", httpMethod = "POST")

@PostMapping("update")

public JSONResult update(

@ApiParam(name = "userId", value = "用户id", required = true)

@RequestParam String userId,

@RequestBody @Valid CenterUserBO centerUserBO,

BindingResult result,

HttpServletRequest request, HttpServletResponse response) {

if (result.hasErrors()){

Map<String, String> errorsMap = getErrors(result);

return JSONResult.errorMap(errorsMap);

}

Users userResult = centerUserService.updateUserInfo(userId, centerUserBO);

userResult = setNullProperty(userResult);

CookieUtils.setCookie(request, response, "user",

JsonUtils.objectToJson(userResult), true);

// TODO 后续要改,增加令牌token,会整合进redis,分布式会话

return JSONResult.ok();

}

 

2.3  错误map封装

errorField  属性 username

errorMsg 错误信息

public Map<String,String> getErrors(BindingResult result){

Map<String,String> map=new HashMap<>();

List<FieldError> fieldErrorsList = result.getFieldErrors();

for (FieldError error:fieldErrorsList){

// 错误的属性

String errorField = error.getField();

//错误的提示

String errorMsg = error.getDefaultMessage();

map.put(errorField,errorMsg);

}

return map;

}

//统一返回

public static JSONResult errorMap(Object data) {

return new JSONResult(501, "error", data);

}

以上是 springboot实体类参数验证 的全部内容, 来源链接: utcz.com/z/510635.html

回到顶部