(企业 / 公司项目)SpringBoot3整合校验框架validation

在Spring Boot项目中使用校验框架validation可以让我们更方便地实现数据校验和错误提示。下面是Spring Boot集成校验框架validation的步骤。

        添加依赖

在项目的pom.xml文件中添加validation依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

        定义实体类

定义需要校验的实体类,并在属性上添加@NotBlank、@Max、@Min等校验注解。例如:

public class User {
    @NotBlank(message = "用户名不能为空")
    private String username;

    @NotBlank(message = "密码不能为空")
    private String password;

    @Max(value = 100, message = "年龄不能超过100岁")
    @Min(value = 0, message = "年龄不能小于0岁")
    private int age;

    // ... getter/setter
}

        编写校验逻辑

在Controller中编写校验逻辑,首先需要在方法入参中添加@Valid注解,触发校验。例如:

@RestController
public class UserController {

    @PostMapping("/user")
    public Result saveUser(@Valid @RequestBody User user) {
        // 保存用户信息
        // ...
        return Result.success();
    }

    // ...
}

        处理校验错误

在Controller中通过添加BindingResult类型的参数来获取校验结果,并进行错误处理。例如:

@RestController
public class UserController {

    @PostMapping("/user")
    public Result saveUser(@Valid @RequestBody User user, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            return Result.failure(bindingResult.getAllErrors().get(0).getDefaultMessage());
        }
        // 保存用户信息
        // ...
        return Result.success();
    }

    // ...
}

BindingResult中存储了所有的校验错误信息。我们可以通过getAllErrors()方法获取所有错误信息,然后根据需要进行处理。

        自定义校验注解

在实际开发中,我们可能需要定义自己的校验注解。这时需要定义注解和对应的校验器。例如,定义一个手机号码校验注解和对应的校验器:

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = PhoneValidator.class)
public @interface Phone {

    String message() default "手机号格式不正确";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}

public class PhoneValidator implements ConstraintValidator<Phone, String> {

    private static final String REGEX_PHONE = "^1[3456789]\\d{9}$"; // 手机号正则表达式

    @Override
    public void initialize(Phone phone) {
    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if (StringUtils.isBlank(value)) {
            return true; // 忽略空值,由@NotBlank注解校验
        }
        return Pattern.matches(REGEX_PHONE, value);
    }
}

然后在实体类中使用该注解:

public class User {
    // ...

    @Phone(message = "手机号格式不正确")
    private String phone;

    // ... getter/setter
}

至此,Spring Boot集成校验框架validation的步骤介绍完毕。

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Spring Boot项目整合Druid和MyBatis Plus可以提供非常好的数据库访问性能和可维护性。下面是一些简单的步骤: 1. 添加依赖 在pom.xml中添加以下依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>{druid-version}</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>{mybatis-plus-version}</version> </dependency> ``` 2. 配置数据源 在application.properties或application.yml文件中添加以下配置: ```yml spring: datasource: url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource # druid 连接池配置 druid: initial-size: 2 min-idle: 1 max-active: 20 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: false pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 filters: stat, wall, log4j connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 ``` 3. 配置MyBatis Plus 在配置类中添加以下配置: ```java @Configuration @MapperScan("com.example.mapper") public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } } ``` 这里使用了MyBatis Plus的分页插件。 4. 创建Mapper 创建Mapper接口并使用MyBatis Plus的注解: ```java @Mapper public interface UserMapper extends BaseMapper<User> { } ``` 5. 测试 创建Controller并测试: ```java @RestController @RequestMapping("/users") public class UserController { @Autowired private UserMapper userMapper; @GetMapping("") public List<User> list() { return userMapper.selectList(null); } } ``` 这样就完成了Druid和MyBatis Plus的整合

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全能技术师

相关资源在博客首页资源下获取

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值