Hibernate Query Language(HQL) Criteria Query! J+ K( p3 Y0 k9 V! E; B* `1 \
Native SQL) a7 k& c/ [# t9 F) c- ` y
下面临其分袂进行诠释
- Y" k8 W1 t5 [( }4 P, | Hibernate Query Language:1 ]- r2 @- p/ F$ e7 x
HQL供给了是十分强年夜的功能,它是针对持久化对象,用取得对象,而一直行update,delete和insert等操作。而且HQL是面向对象的,具备担任,多态和联系关系等特征。
2 G* d. g; Y6 i from子句:8 R# w. B1 x6 }* g1 C+ w N
from子句是最简单的HQL,例如from Student,也可以写成 select s from Student s。它简单的返回Student类的所有实例。$ c" l9 K1 E, D& e) E
值得注重的是除了JAVA类和属性的名称外,HQL语句对巨细写不敏感。
& L+ ]2 F& r1 U0 E: r! Q select子句:* M2 C/ p8 L/ V4 g3 y. d
有时并不需要取得对象的所有属性,这时可以使用select子句进行属性发芽,如select s.name from Student s。) x k! \$ ~! B7 I3 p
例: public void HQLselectDEMO(), [; }* y- N! V: c( _
{
4 q0 {# \6 V& Y TRegister user = new TRegister();* j* E) c/ d$ i) ?( p
Session session = HibernateUtil.currentSession();( m, Q& `' K+ [ m6 B/ H
Query query = session.createQuery("select u.userName from TRegister u");
" v. u6 M' |& r" X List list = query.list();6 c1 Y. L) D, G! i1 D
for(int i = 0 ; i < list.size(); i++)0 x1 }) z* Y8 W) ]
{
" i9 y: M- J- I4 v* @3 o- ] String name = (String)list.get(i);
& }2 r: q8 p5 B# z5 ]* \7 A System.out.println(name);1 m9 } j7 m% T) m3 S9 B% r) o. N
}
5 K. R% G E8 v2 r6 Z }如不美观要发芽两个以上的属性桧以数组的体例返回,如下: public void HQLselectDEMO()
6 b/ g; j9 h/ f1 K8 u {9 }- f% ?0 D7 [: P$ @7 j& j( z+ A
TRegister user = new TRegister();2 G+ Y# L6 l4 q/ ]8 c! }
Session session = HibernateUtil.currentSession();2 ~- W" S% B8 E& n6 y* ^$ G2 P, S( L
Query query = session.createQuery("select u.userName ,u.sex from TRegister u");4 j. T/ j' a; {8 A( m+ C" K
List list = query.list();2 I6 }7 B4 R: y. k d* E
for(int i = 0 ; i < list.size(); i++)
3 p4 D4 s8 m T% _ m' f5 y {! Y; C4 P; X( k; z# x3 h: A
Object obj[] = (Object[])list.get(i);
2 a+ H2 q3 t* A( c: ^ System.out.println(obj[0]+" 的性别是:"+obj[1]);3 i- M. ~: C( Z" Y! u
}
1 }8 T, {, ]* P% W6 k' J }
+ l3 t# U: n# r' d: Z 在使用属性发芽时,因为使用对象数组,操作和理解不太便利,如不美观将 一个object[]中所有成员封装成一个对象就便利多了。下面的轨范做了示例: public void HQLselectDEMO() n9 U6 d: N2 F, T" D9 o6 c+ M7 I" B
{
' ^5 {9 ]8 T9 W Session session = HibernateUtil.currentSession();
]7 \5 h. ^) o' o Query query = session.createQuery("select new TRegister(u.userName,u.sex) from TRegister u");
! U- j1 e1 F4 |0 S7 I- n/ E4 a) B List list = query.list();
9 J2 {% ^8 x' w5 k for(int i = 0 ; i < list.size(); i++)3 I. C; h4 b# P5 F
{) d! ~2 X/ w1 u# l0 E
//Object obj[] = (Object[])list.get(i);
8 h% _5 d- }# h" E TRegister user = (TRegister)list.get(i);
6 x# [" A, }; k& G5 E0 V System.out.println(user.getUserName()+" 的性别是:"+user.getSex());
2 S8 M( p4 L# j# L& u8 k } |