声明:最近在找合伙人一块做一个社交类型的APP,有能力者联系QQ:1126427292
一、学习案例:关于上一章的《Hibernate之Ognl详解》的演示项目很多朋友说后面的不是很了解。这一章就暂且做下讲解。
a)根对象就是我们通过context.setRoot(...);设置的对象,我们可以设置多个。
b)#,如果不是根对象就用#取对象,否则直接取对象。
c)调用静态方法需要使用@[email protected]。如:@[email protected](10)。如果是调用Math中的方法,可直接使用@@...。如:@@max(1, 5)
d)对于定义列表或数组直接使用花括号{},如:{‘aa‘, ‘bb‘, ‘cc‘, ‘dd‘},访问数组中元素直接在花括号后面使用索引的方式:{...}.[0]
e)Map的定义使用了#,这个不同于之前讲的#,这个只是用来定义Map类型的。如:#{‘key1‘: ‘value1‘, ‘key2‘: ‘value2‘}[‘key3‘]
f)过滤(filtering):对集合(collection)中的元素按条件经行筛选,返回的对象也是一个集合。
如:#persons.{? #this.name.length() > 4}
表示的是遍历persons中的对象,满足对象中name长度大于4的返回。
1、#persons.{^ #this.name.length() > 4}表示返回满足条件的第一个对象。返回的类型是集合。
2、#persons.{$ #this.name.length() > 4}表示返回满足条件的最后一个对象。返回的类型是集合。
3、#this代表当前正在迭代的集合中的对象。
g)投影(projection):对集合(collection)中的元素按条件经行筛选,返回的对象是对象中的某一属性的一个集合。
1、#persons.{name}表示返回persons集合中每个对象的name属性的集合。返回值为:[zhangsan, lisi, wangwu]
2、#persons.{#this.name.length() <= 5 ? ‘Hello World‘ : #this.name}表示persons集合中对象的name属性值小于等于5的用‘Hello World‘代替,大于5的保持原值,然后以集合的形式返回。
返回值为:[zhangsan, Hello World, wangwu]
h)过滤和投影的区别:过滤是返回的原对象的集合,而投影返回的是原对象中属性的集合。类比于数据库中的表,过滤是取行操作,投影是取列操作。
三、经验之谈:
a)过滤和投影在项目用的很少,不过一旦使用将会有意想不到的效果。关于OGNL的知识了解的也差不多了。后面将会在struts2的标签中进行使用。
四、参考项目:http://download.csdn.net/detail/u011638419/8280245
五、每日一乐:
一群蚂蚁爬上了大象的背,但被摇了下来,只有一只蚂蚁死死地抱着大象的脖子不放,下面的蚂蚁大叫:掐死他,掐死他,小样,还他妈反了!
最终解释权归大学生创业所有。转载请注明出处。@www.23hhr.com