@NotNull,groups属性,{Update.class, Delete.class,...}

参数校验的时候,声明只有更新或者删除的时候生效

    @ExcelIgnore
    @ApiModelProperty(value = "主键id")
    @NotNull(message = "请输入id",groups = {Update.class, Delete.class})
    @TableId(value = "id", type = IdType.UUID)
    private String id;

@Data @AllArgsConstructor @NoArgsConstructor @Builder @Table(name = "advert") public class Advert { /** * 主键 / @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @ApiModelProperty(value = "广告唯一id") private Integer id; /* * 广告名称 / @ApiModelProperty(value = "广告名称") @NotBlank(message = "广告名称不可为空", groups = {AddGroup.class, UpdateGroup.class}) private String name; /* * 广告位置ID / @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "position_id") private AdPosition position; /* * 广告图片ID / @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "media_id") private MediaFile media; /* * 开始日期 / @Column(name = "start_date") @ApiModelProperty(value = "开始日期") @NotNull(message = "开始日期不可为空", groups = {AddGroup.class}) private Date startDate; /* * 结束日期 / @Column(name = "end_date") @ApiModelProperty(value = "结束日期") @NotNull(message = "结束日期不可为空", groups = {AddGroup.class}) private Date endDate; /* * 广告链接 / @ApiModelProperty(value = "广告链接") @NotBlank(message = "广告链接不可为空", groups = {AddGroup.class}) private String link; /* * 广告状态:0:未启用,1:已启用,2:已结束 / @ApiModelProperty(value = "广告状态") @NotNull(message = "广告状态不可为空", groups = {UpdateGroup.class}) private Integer status; /* * 创建时间 / @Column(name = "create_time") @ApiModelProperty(value = "创建时间") private Date createTime; /* * 更新时间 */ @Column(name = "update_time") @ApiModelProperty(value = "更新时间") private Date updateTime; },对这个类的对象进行添加和修改时,因为在server层有大量重复代码,如何简化代码并避免并发问题
06-01
这是 Java 中使用注解和分组校验实现非空校验的示例代码。 首先,@NotNull 是一个用于校验字段非空的注解。它可以用在字段、方法参数和方法返回值上。在这个示例中,@NotNull 注解被用在了字段上。 而 groups 属性是用于指定校验分组的,它可以用来对不同的校验场景进行分类。如果没有指定分组,则默认为 Default 分组。 示例代码如下: ``` public class User { @NotNull(groups = Add.class, message = "操作用户id不能为空") private Long userId; // 其他字段略 // getter 和 setter 略 } ``` 在上面的代码中,@NotNull 注解被用来校验 userId 字段非空。同时,通过 groups 属性指定了它属于 Add 分组,表示这个校验规则只在执行 Add 操作时生效。 接下来,我们需要编写一个校验器来实现对 Add 分组的校验。示例代码如下: ``` public class AddValidator implements ConstraintValidator<Add, User> { @Override public boolean isValid(User user, ConstraintValidatorContext context) { if (user == null) { return true; } return user.getUserId() != null; } } ``` 在上面的代码中,AddValidator 类实现了 ConstraintValidator 接口,其中 Add 是一个自定义注解,用于指定校验规则所属的分组。isValid 方法用于实现校验逻辑,如果校验通过则返回 true,否则返回 false。 最后,我们需要在 User 类上使用 @GroupSequence 注解指定校验分组的顺序。示例代码如下: ``` @GroupSequence({Default.class, Add.class}) public interface UserCheckGroup { } ``` 在上面的代码中,@GroupSequence 注解用于指定校验分组的顺序。这里指定了先执行 Default 分组的校验,再执行 Add 分组的校验。 这样,在执行添加操作时,只会执行 Add 分组的校验规则,其他分组的校验规则会被忽略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值