如何将varchar的长度限制在2到100之间

mznpcxlj  于 2021-06-17  发布在  Mysql
关注(0)|答案(3)|浏览(356)

我在mysql数据库中有一个表,其列名为“name”。我希望每当任何查询来存储这个列中的name时,name的长度都应该大于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;

}
bsxbgnwa

bsxbgnwa1#

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;
whhtz7ly

whhtz7ly2#

有bean验证注解,比如@size和@pattern。您可以用它们注解所需的字段。下面是这些注解的列表。

3ks5zfa0

3ks5zfa03#

我不想检查数据库表。我想把这张支票放在密码里。
编辑:这篇文章是为那些不想使用注解的人写的,如果你认为实体是“datatable”。如果您想使用注解,那么使用下面的正则表达式 @Pattern 注解
如果不想将其存储在数据库中,则需要在pojo上方的服务层或模型成员类内部处理。这取决于您对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个字符。

相关问题