Grails Quick Reference 1.1
### Grails 快速参考指南 1.1:领域模型与数据验证 #### 领域类(Domain Class) 在Grails框架中,领域模型是应用程序的核心组件之一,用于表示数据库中的实体。Grails通过使用GORM(Groovy on Rails ORM)提供了对持久化的支持,使得开发人员可以轻松地定义和操作数据模型。 - **`Book` 类**:这是一个典型的Grails领域类示例。`Book` 实现了 `Comparable` 接口,以便根据 `releaseDate` 进行排序。它包含了如 `title`、`year`、`price` 和 `releaseDate` 等属性,以及与之相关的其他对象,如 `Author` 和 `Publisher`。`static` 块中的 `belongsTo` 和 `hasMany` 关系指定了与其他领域的关联。 - **`Author` 类**:表示作者实体,拥有一个 `name` 属性和两个 `hasMany` 关联:`books` 和 `coBooks`,分别对应主作者和合著者书籍。 - **`Publisher` 类**:代表出版社,使用了 `static mapping` 块来定义数据库映射策略,包括表名、缓存策略、排序、版本控制等高级配置。 #### 数据验证 数据验证是Grails框架中的一个重要特性,用于确保数据的完整性和一致性。验证规则定义在领域类的 `static constraints` 块内,具体规则如下: - **`blank`**:检查字段是否为空或只包含空格。例如,`title` 字段不允许为空或仅包含空格。 - **`creditcard`**:验证信用卡号格式。例如,`cardNo` 应当符合标准信用卡号码的格式。 - **`email`**:验证电子邮件地址的格式。例如,`contactEmail` 应当是一个有效的电子邮件地址。 - **`inList`**:验证字段值是否在指定列表中。例如,`name` 的值应当在预定义的列表 `['A','B','C']` 中。 - **`matches`**:使用正则表达式验证字段格式。例如,`name` 只能包含字母。 - **`max`**:限制字段的最大值。例如,`percentage` 的最大值为100。 - **`maxSize`**:限制集合的最大大小。例如,`children` 集合的大小不能超过10。 - **`min`**:设定字段的最小值。例如,`price` 的最小值为0.5。 - **`minSize`**:设定集合的最小大小。例如,`children` 集合至少要有5个元素。 - **`notEqual`**:确保字段值不等于指定值。例如,`login` 的值不能等于 'root'。 - **`nullable`**:允许字段值为 `null`。例如,`name` 字段可以接受 `null` 值。 - **`range`**:限定字段值的范围。例如,`age` 的值必须在1到150之间。 - **`scale`**:设定小数点后位数。例如,`price` 的小数点后最多两位。 - **`size`**:限制字符串长度或集合大小。例如,`children` 集合的大小应在5到10之间。 - **`unique`**:确保字段值在整个应用中唯一。例如,`login` 字段的值在所有实例中都是唯一的。 - **`url`**:验证URL格式。例如,`homePage` 应当是一个有效的URL。 - **`validator`**:自定义验证逻辑。例如,`even` 验证器确保值是偶数,或者 `pwd` 验证器检查密码与确认密码是否一致。 通过这些验证规则,Grails提供了一套强大的工具来确保数据的正确性,简化了开发流程并提高了应用程序的健壮性。
- 粉丝: 2
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于ArcEngine的GIS数据处理系统.zip
- (源码)基于JavaFX和MySQL的医院挂号管理系统.zip
- (源码)基于IdentityServer4和Finbuckle.MultiTenant的多租户身份认证系统.zip
- (源码)基于Spring Boot和Vue3+ElementPlus的后台管理系统.zip
- (源码)基于C++和Qt框架的dearoot配置管理系统.zip
- (源码)基于 .NET 和 EasyHook 的虚拟文件系统.zip
- (源码)基于Python的金融文档智能分析系统.zip
- (源码)基于Java的医药管理系统.zip
- (源码)基于Java和MySQL的学生信息管理系统.zip
- (源码)基于ASP.NET Core的零售供应链管理系统.zip