SpringBoot 整合 hibernate validation Demo

x33g5p2x  于2021-09-24 转载在 Spring  
字(3.1k)|赞(0)|评价(0)|浏览(273)

Demo地址:https://gitee.com/pengld-demo/hibernate-validation-demo

依赖

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
        <version>2.4.4</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.20</version>
    </dependency>
</dependencies>

DTO

package cn.pengld.validator.dto;

import lombok.Data;
import javax.validation.constraints.*;
import java.util.Date;

@Data
public class UserDTO {
    private Long id;
    @NotEmpty(message = "username is empty")
    private String username;
    @NotEmpty(message = "pwd is empty")
    private String pwd;
    @NotEmpty(message = "name is empty")
    private String name;
    private Boolean sex;
    @Past
    private Date birth;
    private String address;
    private String phone;
    @Email(message = "email is not correct")
    private String email;
    @Min(value = 1,message = "age must greater than 1")
    private Integer age;

    @Override
    public String toString() {
        return "UserDTO{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", pwd='" + pwd + '\'' +
                ", name='" + name + '\'' +
                ", sex=" + sex +
                ", birth=" + birth +
                ", address='" + address + '\'' +
                ", phone='" + phone + '\'' +
                ", email='" + email + '\'' +
                ", age=" + age +
                '}';
    }
}

Service

interface

import javax.validation.Valid;

// 接口方法申明
String addUser(@Valid UserDTO userDTO);

impl

package cn.pengld.validator.service.impl;

import cn.pengld.validator.dto.UserDTO;
import cn.pengld.validator.service.UserService;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

@Service
@Validated
public class UserServiceImpl implements UserService {
    
    @Override
    public String addUser(UserDTO userDTO) {
        System.out.println(userDTO.toString());
        return "now is at service implements method return block";
    }
}

global exception handler

package cn.pengld.validator.handler;

import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.util.HashMap;
import java.util.Map;

@ControllerAdvice(basePackages = "cn.pengld.validator")
@Component
public class ValidateExceptionHandler {

    @ExceptionHandler(value = ConstraintViolationException.class)
    @ResponseBody
    public Map handlValidateException(ConstraintViolationException e){
        Map  m = new HashMap();
        StringBuilder sb = new StringBuilder();
        for(ConstraintViolation c : e.getConstraintViolations()){
            sb.append(c.getMessage());
        }
        m.put("code","1001");
        m.put("message",sb.toString());
        return m;
    }
}

相关文章

微信公众号

最新文章

更多