我在MySQL数据库中有一个表,该表的列名为“名称”。我希望每当有任何查询要在此列中存储名称时,名称的长度应为> 2且<= 100。
而且名称只能以字母开头。
我不想将此检查放在数据库表上。我要将这张支票放在代码中。
@Entity
@Table(name = "member")
public class Member implements Serializable{
private static final long serialVersionUID = 9045098179799205444L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@Column(name = "name")
String name;
@Column(name = "email")
String email;
}
答案 0 :(得分:1)
Validate it before the persistence with javax.validation.constraints.Size;
@Size(min = 2, max = 200, message
= "name field must be between 2and 200 characters")
@Column(name = "name")
String name;
答案 1 :(得分:0)
有Bean验证批注,例如@Size和@Pattern。您可以使用它们注释所需的字段。 Here是这些注释的列表。
答案 2 :(得分:0)
我不想将此检查放在数据库表上。我要将这张支票放在代码中。
编辑:这篇文章是为那些不想使用注释并且如果您将实体视为' Datatable '的人而写的。如果您想要使用批注,则将下面的正则表达式与@Pattern
annotation
好吧,如果您不想将其存储在数据库中,则需要在POJO的服务层上方或在模型 Member 类内部进行处理。 。 取决于您对有或没有业务逻辑的POJO / DTO的看法。
检查本身就像
一样简单public void setName(String name){
Pattern pattern = Pattern.compile("^[A-Za-z].{1,100}");
Matcher matcher = pattern.matcher(test);
if(matcher.matches()){
// save here
}else{
// handle error here (exception?!)
}
}
此模式检查并判断字符串以字母字符开头,并且在字母字符后至少还有2个字符,第一个字符后最多可以有99个字符。