开发自定义注解实现——如果传参里面包含有 “猪头” 就跳出!
一、实体类——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,转载请注明。