EJB3.0实体Bean(六)

大小写敏感性(Case Sensitivity)
除了Java 类和属性名称外,查询都是大小写不敏感的。 所以,SeLeCT 和 sELEct 以及 SELECT 相同的,
但是com.foshanshop.ejb3.bean.Person 和 com.foshanshop.ejb3.bean.PERSon 是不同的, person.name 和
person.NAME 也是不同的。
排序(order by)
下面是一个简单查询的例子,可以看到EJB3 QL和SQL的使用方法很类似。"ASC"和"DESC"分别为升序和降序,
如果不显式注明,EJB3 QL中默认为asc升序。(例子的源代码在Query文件夹)
查询部分属性
在前面的例子中,都是对针对Entity类的查询,返回的也是被查询的Entity类的实体。EJB3 QL也允许我们直接
查询返回我们需要的属性,而不是返回整个Entity。在一些Entity 中属性特别多的情况,这样的查询可以提高性
能。(例子的源代码在Query文件夹)
查询中使用构造器(Constructor)
EJB3 QL支持将查询的属性结果直接作为一个java class的构造器参数,并产生实体作为结果返回。(例子的源代
Jboss EJB3.0实例教程
版权所有:黎活明
码在Query文件夹)

聚合查询(Aggregation)
象大部分的SQL一样, EJB3 QL也支持查询中的聚合函数。目前EJB3 QL支持的聚合函数包括:
1. AVG()
2. SUM()
3. COUNT()
4. MAX()
5. MIN()

和SQL一样,如果聚合函数不是select...from的唯一一个返回列,需要使用"GROUP BY"语句。"GROUP BY"应
该包含select语句中除了聚合函数外的所有属性。(例子的源代码在Query文件夹)


如果还需要加上查询条件,需要使用"HAVING"条件语句而不是"WHERE"语句。(例子的源代码在Query文件夹)


关联(join)
在EJB3 QL中,仍然支持和SQL中类似的关联语法:
left out join/left join
inner join
left join/inner join fetch
left out join/left join等,都是允许符合条件的右边表达式中的Entiies 为空。(例子的源代码在Query文件夹)

需要显式使用left join/left outer join的情况会比较少。
inner join要求右边的表达式必须返回Entities。(例子的源代码在Query文件夹)
left/left out/inner join fetch提供了一种灵活的查询加载方式来提高查询的性能。在默认的查询中,Entity中的集合
属性默认不会被关联,集合属性默认是缓加载( lazy-load )。

比较Entity
在查询中使用参数查询时,参数类型除了String, 原始数据类型( int, double等)和它们的对象类型( Integer, Double
等),也可以是Entity的实例。(例子的源代码在Query文件夹)

批量更新(Batch Update)
EJB3 QL支持批量更新. (例子的源代码在Query文件夹)
批量删除(Batch Remove)
EJB3 QL支持批量删除。(例子的源代码在Query文件夹)
使用操作符NOT
使用操作符BETWEEN
使用操作符IN
使用操作符LIKE
使用操作符IS NULL
使用操作符IS EMPTY
IS EMPTY 是针对集合属性(Collection)的操作符。可以和NOT一起使用。(例子的源代码在Query文件夹)。注:
低版权的Mysql不支持IS EMPTY

使用操作符EXISTS
[NOT]EXISTS需要和子查询配合使用。(例子的源代码在Query文件夹)。注:低版权的Mysql不支持EXISTS


字符串函数
EJB3 QL定义了内置函数方便使用。这些函数的使用方法和SQL中相应的函数方法类似。EJB3 QL中定义的字
符串函数包括:
1. CONCAT 字符串拼接
2. SUBSTRING 字符串截取
3. TRIM 去掉空格
4. LOWER 转换成小写
5. UPPER 装换成大写
6. LENGTH 字符串长度
7. LOCATE 字符串定位

计算函数
EJB3 QL中定义的计算函数包括:
ABS 绝对值
SQRT 平方根
MOD 取余数
SIZE 取集合的数量

子查询
子查询可以用于WHERE和HAVING 条件语句中。(例子的源代码在Query文件夹)。注:低版权的Mysql不支持
子查询
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值