a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 105|回复: 0

[基础知识] java认证辅导之Hibernate数据查询

[复制链接]
发表于 2012-8-4 12:37:27 | 显示全部楼层 |阅读模式
 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  }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-4-29 16:33 , Processed in 0.156892 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表