2008-04-10

EJB3学习笔记之 EJB3中的注释(四)

关键字: ejb3 ejb注释 ejb学习笔记

 

9.       查询

A.       位置参数查询。格式为:“ ?+ 位置编号” , 例如:

Query query = em.createQuery("select p from Person p where p.personid=?1");

query.setParameter(1,new Integer(1));

B.        命令参数查询,格式为:“: + 参数名”,例如:

Query query = em.createQuery("select p from Person p where p.personid=:Id");

query.setParameter("Id",new Integer(1));

C.       排序 (order by)

"ASC" "DESC" 分别为升序和降序,如果不显式注明, EJB3 QL 中默认为 ASC 升序。

D.       查询中使用构造器 (Constructor)

EJB3 QL 支持将查询的属性结果直接作为一个 java class 的构造器参数,并产生实体作为结果返回。例如:

Query query = em.createQuery("select new com.foshanshop.ejb3.bean.SimplePerson(p.name,p.sex) from Person p order by p.personid desc");

// 集合中的元素是 SimplePerson 对象

List result = query.getResultList();

E.        EJB3 QL 也支持查询中的聚合函数。目前 EJB3 QL 支持的聚合函数包括:

AVG() SUM() COUNT() MAX() MIN() ,用法与 SQL 里面的类似。

F.        group by having where 等关键字的用法,和 SQL 语法类似。

G.       关联 (join)

EJB3 QL 中,仍然支持和 SQL 中类似的关联语法:

a.         Left out join/left join

left out join/left join 等,都是允许符合条件的右边表达式中的 Entities 为空。需要显式使用 left join/left outer join 的情况会比较少。

b.         Inner join

inner join 要求右边的表达式必须返回 Entities

c.         Left join/inner join fetch

left/left out/inner join fetch 提供了一种灵活的查询加载方式来提高查询的性能。在默认的查询中, Entity 中的集合属性默认不会被关联,集合属性默认是缓加载 ( lazy-load )

H.       比较 Entity

在查询中使用参数查询时,参数类型除了 String, 原始数据类型 ( int, double ) 和它们的对象类型 ( Integer, Double ), 也可以是 Entity 的实例。例如:

Query query = em.createQuery("select o from Order o where o.ower =?1 order by o.orderid");

Person person = new Person();

person.setPersonid(new Integer(1));

// 设置查询中的参数

query.setParameter(1,person);

I.         not in between in like exists is null is empty 等关键字的用法,和 SQL 语法类似。

J.         字符串函数

EJB3 QL 定义了内置函数方便使用。这些函数的使用方法和 SQL 中相应的函数方法类似。 EJB3 QL 中定义的字符串函数包括:

a.         CONCAT          字符串拼接

b.         SUBSTRING        字符串截取

c.         TRIM              去掉空格

d.         LOWER           转换成小写

e.         UPPER              转换成大写

f.          LENGTH          字符串长度

g.         LOCATE          字符串定位

K.       计算函数

EJB3 QL 中定义的计算函数包括:

a.         ABS 绝对值

b.         SQRT 平方根

c.         MOD 取余数

d.         SIZE 取集合的数量

注意: size 的用法,例如:

Query query = em.createQuery("select o.orderid, size(o.orderItems) from Order as o group by o.orderid");

 

EJB3学习笔记之 EJB3中的注释(一)

EJB3学习笔记之 EJB3中的注释(二)

EJB3学习笔记之 EJB3中的注释(三)

EJB3学习笔记之 EJB3中的注释(四)

EJB3学习笔记之 EJB3中的注释(五)

评论
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

julycn
搜索本博客
我的相册
0a46256d-c842-3a98-84ca-5ee90d4e18ae-thumb
untitled.JPG
共 12 张
存档
最新评论