热爱技术,追求卓越
不断求索,精益求精

【20】请求参数校验spring validation

从0开始搭建后台管理系统,这是No20。上一篇我们讲到了:java代码包结构调整。这一节,我们来谈谈请求参数校验。

1、引入依赖

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

2、定义校验类型

新增时校验

package cn.lovecto.yuen.common.validate;

public interface OnAdd {
}

修改时校验

package cn.lovecto.yuen.common.validate;

public interface OnUpdate {
}

查询时校验

package cn.lovecto.yuen.common.validate;


public interface OnQuery {
}

3、业务对象上添加校验信息

/**
 * 用户ID
 */
@NotNull(message = "用户ID不能为空", groups = { OnUpdate.class })
private Long id;

/**
 * 用户名
 */
@NotBlank(message = "用户名不能为空", groups = { OnAdd.class, OnUpdate.class })
private String userName;

4、controller上使用

package cn.lovecto.yuen.system.web;

import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

import org.springframework.validation.annotation.Validated;

import cn.lovecto.yuen.common.domain.Result;
import cn.lovecto.yuen.common.domain.page.PageDataResult;
import cn.lovecto.yuen.common.domain.page.PageQuery;
import cn.lovecto.yuen.common.validate.OnAdd;
import cn.lovecto.yuen.common.validate.OnUpdate;
import cn.lovecto.yuen.framework.web.core.BaseController;
import cn.lovecto.yuen.system.api.ISysUserApi;
import cn.lovecto.yuen.system.api.domain.bo.SysUserBo;
import cn.lovecto.yuen.system.api.domain.vo.SysUserVo;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;

import org.springframework.web.bind.annotation.RestController;

/**
 * 用户 控制层。
 *
 * @author Sean.Young
 * @since 2025-12-27
 */
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/sysUser")
public class SysUserController extends BaseController{
	
    private final ISysUserApi baseApi;
    
    /**
     * 查询 用户 列表
     * @param bo
     * @param pageQuery
     * @return
     */
    @GetMapping("/list")
    public PageDataResult<SysUserVo> list(SysUserBo bo, PageQuery pageQuery) {
        return baseApi.queryPage(bo, pageQuery);
    }
    
    /**
     * 获取 用户
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public Result<SysUserVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
        return Result.success(baseApi.getById(id));
    }
    
    /**
     * 新增 用户
     * @param bo
     * @return
     */
    @PostMapping()
    public Result<Void> add(@Validated(OnAdd.class) @RequestBody SysUserBo bo) {
        return toAjax(baseApi.add(bo));
    }
    
    /**
     * 修改 用户
     * @param bo
     * @return
     */
    @PutMapping()
    public Result<Void> update(@Validated(OnUpdate.class) @RequestBody SysUserBo bo) {
        return toAjax(baseApi.update(bo));
    }

    /**
     * 删除 用户
     * @param ids
     * @return
     */
    @DeleteMapping("/{ids}")
    public Result<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
        return toAjax(baseApi.removeByIds(List.of(ids)));
    }

}
赞(0)
未经允许不得转载:LoveCTO » 【20】请求参数校验spring validation

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

热爱技术 追求卓越 精益求精