从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)));
}
}
LoveCTO

