文档章节

Groovy&Grails-代码剪辑-瞬时属性

寡鸡蛋
 寡鸡蛋
发布于 2013/10/02 20:42
字数 467
阅读 30
收藏 0
  • 用户注册验证

在domain中有的属性并不一定要存放到数据库中去,只是在domain中使用而不保存到数据库,这样的属性称为瞬时属性,如下:

<!-- lang: groovy -->
class User {
    static stransients = ["confirmPassword"]

    String firstName
    String lastName
    String userName
    String password
    String email

    String confirmPassword
}

这个confirmPassword只在domain中验证是否和password属性一致,判断用户注册时临时使用一次。

  • 财务计算

再举一个例子,假如计算一个公司的净资产,需要将公司的“现金”、“应收款”、“注册资本”累加得到,而这个累加的值没必要记录到静态数据里,只是临时查询的时候计算一次,就可以使用这个瞬时属性,代码如下:

<!-- lang: groovy -->
class Company {
    BigDecimal cash
    BigDecimal receivables
    BigDecimal capital

    BigDecimal getNetWorth() {
        cash + receivables + capital
    }

    static transients = ['netWorth']
}

如果一个domain中一个属性拥有getName()或setName()方法,那么这个属性就是一个持久化属性,并且可以使用class.name访问

  • 派生属性使用场景

针对上面这个例子,假如netWorth需要保存到数据库记录,但是要随着其他属性的变化而变化,则可以使用派生属性来实现,派生属性实现方法就比上面的更容易了,代码如下:

<!-- lang: groovy -->
class Company {
    BigDecimal cash
    BigDecimal receivables
    BigDecimal capital
    BigDecimal netWorth

    static mapping = {
        netWorth formula: 'CASH + RECEIVABLES + CAPITAL'
    }
}

这里需要注意的是关键字formula,需要数据库的支持,它并不在代码中执行,而是在数据库中执行。有的数据库可能不支持,所以这意味着需要牺牲数据库移植的问题。

© 著作权归作者所有

共有 人打赏支持
寡鸡蛋
粉丝 12
博文 51
码字总数 19107
作品 0
中山
售前工程师
Groovy&Grails-代码剪辑-复用约束

假如我们在程序中使用了一个command对象,在Grails2.0之后的版本中引入了新的机制,可以复用constraints块的代码,重用约束,如下面的例子: 上面的代码时一个标准的domain对象,假如我们要在...

寡鸡蛋
2013/11/01
0
0
Groovy&Grails-代码剪辑-domain对象保存

默认domain对象中,没有在constraints中声明的属性都是必填项。 如User对象 测试代码 会出现用例测试错误,将所有字段都填值后,测试代码运行正常 在constraints中声明lastname允许为空 再测...

寡鸡蛋
2013/10/08
0
0
Groovy&Grails-代码剪辑-初始化

开发时需要初始化一些特定的代码,测试时需要初始化一些测试代码,在生产环境时需要初始化一些运行时环境代码,在Grails的bootstrap中可以根据不同的环境进行特定的植入,代码如下:...

寡鸡蛋
2013/10/03
0
0
Groovy&Grails-代码剪辑-修改主键

有的时候安全起见需要修改ID的生成方式,有时候因为特定的原因对ID字段需要自定义生成,更多的时候是比较无聊。修改ID字段的默认值 使用UUID方式生成ID 自定义ID的值 确实够无聊的。 附带一些...

寡鸡蛋
2013/10/02
0
0
Groovy&Grails-代码剪辑-日志跟踪

任何开发都需要跟踪一些调试信息,避免频繁的使用Debug模式,我们会在方法中放入一些info,执行过程中打印到后台,Grails使用的是log4j作为日志框架,所以和在Java开发中的使用方法是一样的,...

寡鸡蛋
2013/10/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SSO单点登录PHP简单版

  前面做了一个新项目,需要用户资源可以需要共享。由于之前没有做过这样的东西,回家之后,立马网站百度“单点登录”。帖子很多,甄别之后,这里列几篇认为比较有营养。   http://blog...

slagga
27分钟前
1
0
Java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一

对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。 本文参考java 泛型详解、Java中的泛型方法、 java泛型详解 1 概述 泛型在j...

hensemlee
30分钟前
1
0
Annotation注解详细介绍

目录介绍 1.Annotation库的简单介绍 2.@Nullable和@NonNull 3.资源类型注释 4.类型定义注释 5.线程注释 6.RGB颜色纸注释 7.值范围注释 8.权限注释 9.重写函数注释 10.返回值注释 11.@Keep注释...

潇湘剑雨
32分钟前
1
0
一步步编写自己的PHP爬取代理IP项目(二)

这一章节我们正式开展我们的爬虫项目,首先我们先要知道哪个网站能获取到免费代理IP,目前比较火的有西刺代理,快代理等,这里我们拿西刺代理作为例子。 这里就是一个个免费的IP地址以及各自...

NateHuang
51分钟前
2
0
11-利用思维导图梳理JavaSE-Java的反射机制

11-利用思维导图梳理JavaSE-Java的反射机制 主要内容 1.反射与Class类 1.1.反射概念 1.2.Class类 1.3.实例化Class类 1.4.反射的作用 1.5.Class对象的作用 2.反射的深入应用 2.1.调用无参的成...

飞鱼说编程
57分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部