作为我使用Spring Boot构建的网站的一部分,我通过Thymeleaf表单接收输入。为了验证输入,我创建了一个类并注释了它的字段:
package com.bank.domain;
import java.util.Date;
import javax.persistence.Column;
import javax.validation.constraints.Digits;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
public class NewClass {
//if record is active/inactive (hidden)
@Column
private boolean active=true;
//bank of account holder
@NotNull
@Size(min = 2, max =3)
private String banknum;
//branch
@NotNull
@Size(min = 1, max =3)
private String branchnum;
// account number
@NotNull
@Size(min = 4, max =10)
private String accountnum;
// number / range of numbers of Check
@NotNull
@Digits(integer=9, fraction=0)
@Column(columnDefinition = "UNSIGNED INT(9) not null",nullable=false)
private String fromchecknum;
// number / range of numbers of Check
@NotNull
@Digits(integer=9, fraction=0)
@Column(columnDefinition = "UNSIGNED INT(9) not null",nullable=false)
private String tochecknum;
}
因为我打开了调试,我看到sql输出被转储到日志中,即使数据库中没有此类的表。 我不想在SQL查询或其他任何内容上浪费资源,因为没有基础表,只有一个包含验证器的字段的类。
所以我的问题是 -
是否可以只使用常规类并使用各种注释,例如@Size
,@Min
,@NotNull
,@Digits
等?
答案 0 :(得分:1)
看着你的课,似乎System.out.println(people[1].job);
的使用是唯一涉及持久性的事情。你想要那个注释吗?如果查看包结构,System.out.println(((Employee) people[1]).job);
是持久性包,验证相关的注释位于@Column
而不是持久性包中。
即使您的bean不是@column
,也可以使用像javax.validation
之类的Bean验证(JSR303)等。我想那是你的问题,对吗?