Grails中利用枚举(enum)来实现Status、Type功能
2013-02-06 16:40
337 查看
应用中,Domain对象往往需要Status、Type属性,且一般就3-5条,各Domain之间也没什么共性,管理起来就非常麻烦。
Grails中,可以通过枚举类型轻松实现
1. 在src/groovy文件夹下创建枚举对象
public enum ExpenseGroupStatus {
New,
Approved,
WriteOff
}
public enum ExpenseGroupType {
Monthly,
BusinessTrip
}
注意,groovy类不支持内部类,所以无法放在Domain内部(就算可以,也不建议,太乱)
文件也可以放在grails-app/domain下,不会再数据库中生成对应table,但还是建议放在src下
2. 在domain中使用
ExpenseGroupType type
ExpenseGroupStatus status
数据库中仍然自动采用了字符串保存
`status` varchar(255) NOT NULL,
`type` varchar(255) NOT NULL,
就TM这么简单,因为有类型的限制,连inList验证都可以省略了
3. 在gsp中使用
<g:select name="type" from="${ExpenseGroupType.values()}"/>
4. 在controller中使用
ExpenseGroup e = new ExpenseGroup(params)
e.status = ExpenseGroupStatus.Approved
简单到爆。。。。
缺点:如果要更新条目,就需要重新编译重启应用,大型系统估计就哭了。
传统做法是将信息保存在数据库中,更新条目只需要向数据库里插入记录。
Grails中,可以通过枚举类型轻松实现
1. 在src/groovy文件夹下创建枚举对象
public enum ExpenseGroupStatus {
New,
Approved,
WriteOff
}
public enum ExpenseGroupType {
Monthly,
BusinessTrip
}
注意,groovy类不支持内部类,所以无法放在Domain内部(就算可以,也不建议,太乱)
文件也可以放在grails-app/domain下,不会再数据库中生成对应table,但还是建议放在src下
2. 在domain中使用
ExpenseGroupType type
ExpenseGroupStatus status
数据库中仍然自动采用了字符串保存
`status` varchar(255) NOT NULL,
`type` varchar(255) NOT NULL,
就TM这么简单,因为有类型的限制,连inList验证都可以省略了
3. 在gsp中使用
<g:select name="type" from="${ExpenseGroupType.values()}"/>
4. 在controller中使用
ExpenseGroup e = new ExpenseGroup(params)
e.status = ExpenseGroupStatus.Approved
简单到爆。。。。
缺点:如果要更新条目,就需要重新编译重启应用,大型系统估计就哭了。
传统做法是将信息保存在数据库中,更新条目只需要向数据库里插入记录。
相关文章推荐
- Grails中利用枚举(enum)来实现Status、Type功能
- python学习笔记:利用__getattr__属性实现枚举Enum
- 利用《input type=“image”》来巧妙实现map功能
- Android利用Sensor(传感器)实现水平仪功能
- 利用HttpSessionListener实现网站在线人数统计功能(转自http://www.web521.com/web/558068/T645231.shtml)
- 利用paramiko模块实现堡垒机+审计功能
- Enum类型辅助类 利用反射根据int类型获取枚举
- 如何利用button实现链接功能
- 利用jQuery方法实现选项卡的功能
- Java:利用java Timer类实现定时执行任务的功能
- 利用Timer类实现"显示时间"的功能
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
- Datalist利用PageDataSource实现分页功能
- 利用JS实现全选相关功能
- 利用传感器实现微信的摇一摇功能
- 利用正则表达式实现计算器功能
- 利用飞鸽协议实现通信功能
- [AIR] 利用SnapShot.exe实现QQ截屏功能
- java通信二:利用Socket实现聊天室功能
- C#利用组播实现网络会议室功能(即群聊功能)