/** *//**要正确运行以上程序,需要在TRegister类中加入一个相应的构造函数& F" } T- D: I8 Z7 J& T9 l' d
public TRegister(String userName,String sex) { Y3 A4 `: p$ }
this.userName = userName;- g5 ` r3 ?9 }% o9 m) a; b
this.sex = sex;* [& W" s* G8 }5 T; Q7 @
}. v2 l. P: _6 E; s
*/
7 F1 E) n* @- w7 k: y }
$ c1 F9 k; z8 J* z* d. Z 统计函数查询
( _9 S$ W% M1 o7 H0 n! a 可以在HQL中使用函数,经常使用的函数如下:
! x# D1 {' v1 J7 ]3 p* @+ n count():统计记录条数。
, T! T5 [* }; \3 ~( o2 S. I" w2 b: } min():求最小值。
- @ X& K; ]3 a7 H8 d ?3 q max():求最大值。
. e' J$ X+ g8 }; K2 g6 d6 L( Q sum():求和。$ s- n: P( p. {: [
avg():求平均值。
" f0 @) r, ~- T% h1 x 例如,要取得Student实例的数量,可以编写如下HQL语句:
# i* _% b. t2 ?$ q& o/ s1 d select count(*) from Student
/ n+ }3 o. v L K 取得Student平均年龄的HQL语句:
) p1 i( G: @- y0 t) n8 j select avg(s.age) from Student as s" ^* Z% R3 U# j1 D3 ]0 y
可以使用distinct去除重复的数据:* v" m3 [( C1 Q! @: P& F6 e
select distinct s.age from Student as s& ~+ V3 W: W& }. ~
where子句:
l: i- j, ?2 s HQL也支持子查询,它通过where子句实现这一机制。where子句可以让用户缩小要返回的实例的列表范围。例如下面语句会返回所有名字为"Bill"的Student实例:" [6 y7 m, m5 K# G7 r9 }6 I
Query query = session.createQuery("from Student as s where s.name='Bill'");
% Z* z0 o/ b1 i# r% \* e; k where子句允许出现的表达式包括了SQL中可以使用的大多数情况。
0 B+ R5 d6 t2 T) R 数学操作:+,-,*,/
' C m" K/ }( e( `8 f" [$ ?3 n% q) [2 G% Q5 x9 _9 V* D
真假比较操作:=, >=, |