开发自定义注解实现——如果传参里面包含有 “猪头” 就跳出!
一、实体类——TbUserDO
点击查看完整内容
package com.example.test05.demo.model; import cn.afterturn.easypoi.excel.annotation.Excel; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import java.io.Serializable; import java.util.Date; import com.example.test05.demo.config.DbcConstraint; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.EqualsAndHashCode; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.Valid; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; /** * <p> * * </p> * * @author DBC * @since 2021-11-05 */ @Data @EqualsAndHashCode(callSuper = false) @TableName("tb_user") public class TbUserDO implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private Integer id; @NotBlank(message = "姓名不能为空!") @Excel(name = "姓名") @DbcConstraint(message = "名字里面不能有猪头!") private String name; @Min(value = 1, message = "年龄不能小于1!") @Max(value = 120, message = "年龄不能大于120!") @Excel(name = "年龄") private String age; @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @Excel(name = "时间") private Date time; }
二、配置自定义注解
package com.example.test05.demo.config; import javax.validation.Constraint; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import javax.validation.Payload; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * @author DBC * @date 2022/7/11 16:35 * @network dbc655.top */ @Target({ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = DbcConstraint.DbcConstraintValidator.class) public @interface DbcConstraint { String message() default "参数错误"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; class DbcConstraintValidator implements ConstraintValidator<DbcConstraint, Object> { @Override public void initialize(DbcConstraint myConstraint) { //初始化的时候 System.out.println("正在初始化"); } @Override public boolean isValid(Object o, ConstraintValidatorContext constraintValidatorContext) { //这里写判断逻辑 String name = (String) o; return !name.contains("猪头"); } } }
三、直接调用即可
@PostMapping("xinzeng") public JsonData xinzeng(@RequestBody @Validated TbUserDO userDO) { JsonData jsonData = tbUserService.xinzeng(userDO); return jsonData; }
四、结果返回
{ "code": -1, "data": "2022-07-11 17:03:19", "msg": "名字里面不能有猪头!" }
本文作者为DBC,转载请注明。