SpringBoot做参数校验

有时候前端传来的数据不能保证数据是否符合规范,这时就需要我们后端对前端传来的数据进行校验,以保证代码健壮性,所以Validated注解由此而生。

我的项目是springboot+mybatis-plus+maven项目,使用swagger实现接口文档,对于相关依赖我就不做阐述了,接下来让我们看看如何操作吧~(以下是对注册或新增做示例)

首先,这是我的实体类

@Getter
@Setter
@TableName("userinfo")
@Builder
@ApiModel(value = "Userinfo对象", description = "")
public class Userinfo implements Serializable {

    private static final long serialVersionUID = 1L;

      @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    @TableField("username")
    private String username;

    @TableField("password")
    private String password;

    @TableField("role")
    private String role;

    @TableField("status")
    private Integer status;

    @TableField("create_time")
    private Date createTime;

    @TableField("updatetime")
    private Date updatetime;

    @TableField("phone")
    private String phone;


}

以上字段中updatetime、createTime、status、role是后台自动生成

接下来生成一个dto参数校验类,根据以上提供的实体类来实现(后台自动生成的字段不需要写入其中)。

首先,需要引入以下依赖:

 <!--        参数校验-->
        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.2.0.Final</version>
        </dependency>
@Data

//放参数校验的数据
//implements实现序列化
public class RegisterDto implements Serializable {


    @NotEmpty(message="ID不能为空")
    private int id;

    @NotEmpty(message="账号不能为空")
    @Length(min=3,max=10,message="账号应为长度为3-10")
    @Patter(regexp="^[A-Za-z0-9]+$",message="账号只能是数字或字母")//这里使用了正则表达式
    private String username;

    @NotEmpty(message="密码不能为空")
    @Length(min=3,max=10,message="密码应为长度为3-10")
    private String password;



    private Integer status;


    @NotEmpty(message="手机号不能为空")
    @Length(min = 3, max = 10, message = "手机号应为长度为3-10")
    private String phone;

}

然后,接下来实现service层的implements:

 @Autowired
    private UserinfoDao userinfoDao;

    @Override
    public Boolean Register(RegisterDto registerDto) {
        Userinfo userinfo=userinfoDao.selectById(registerDto.getId());
        Userinfo userinfo1=null;
        if(userinfo==null){
            String role="普通用户";
            if(registerDto.getUsername().contains("ad")){
                role = "管理员";
            }
//对密码进行加密,此处builtMd5是我自己写的一个加密方法
            String md5pwd= Md5Utils.builtMd5(registerDto.getPassword());
             userinfo1=Userinfo.builder()
                    .id(registerDto.getId())
                    .username(registerDto.getUsername())
                    .password(md5pwd)
                    .role(role)
                    .createTime(new Date())
                    .updatetime(new Date())
                    .status(1)
                    .build();

        }
       return userinfo1!=null;
    }

实现service层接口:

public interface UserinfoService extends IService<Userinfo> {
 Boolean Register(RegisterDto registerDto);
}

实现controller层:

 @ApiOperation("新增用户")
    @PostMapping("/saveUserinfo")
    public R AddUserinfo(@RequestBody @Valid RegisterDto registerDto) {
    logger.info("正在进行注册操作");
    boolean re=userinfoService.Register(registerDto);
    if(re){
        return R.Success("注册成功");
    }
    else{
        return R.Failed("注册失败,你注册的用户已存在");
    }

使用postman运行(对于输入不正确的username格式后台会报错)

输入正确的新增格式:

以上便是所有的代码啦~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

银氨溶液

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值