a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 114|回复: 1

[基础知识] JAVA基础:Hibernate数据查询(1)

[复制链接]
发表于 2012-8-4 12:37:27 | 显示全部楼层 |阅读模式
Hibernate Query Language(HQL)   Criteria Query
7 }+ F1 H; l/ ]3 l  Native SQL2 Z$ i9 g6 o+ c1 B# Z$ v
  下面对其分别进行解释8 Z/ H% P4 }% |6 ^+ ]: D* s
  Hibernate Query Language:
1 S3 B3 I8 Z6 D! R/ r  HQL提供了是十分强大的功能,它是针对持久化对象,用取得对象,而不进行update,delete和insert等操作。而且HQL是面向对象的,具备继承,多态和关联等特性。) q/ H8 I* K8 i& X5 W9 b
  from子句:
+ m8 @" N  I/ G& d/ G" P  from子句是最简单的HQL,例如from Student,也可以写成 select s from Student s。它简单的返回Student类的所有实例。
  t! x) x* S/ ~; c# h  值得注意的是除了JAVA类和属性的名称外,HQL语句对大小写不敏感。) ~4 A: S% ~' t
  select子句:& Z  n/ P; p. p" E/ x
  有时并不需要取得对象的所有属性,这时可以使用select子句进行属性查询,如select s.name from Student s。# i" y# v1 y) N' n! v3 g4 ?
  例: public void HQLselectDEMO(): |6 t  I. V* d; i
  {
* x. |9 m9 w% Y/ A; E& U+ R  TRegister user = new TRegister();3 G: j7 q( M1 k1 b9 `. G3 q
  Session session = HibernateUtil.currentSession();
3 J& y* h* q, b# K5 H  Query query = session.createQuery("select u.userName from TRegister u");
4 }' y' T/ U5 ?4 k% I  List list = query.list();9 f. P* X' R5 M6 F3 r& l% s
  for(int i = 0 ; i < list.size(); i++)6 P2 Q' d& e# \; H1 B/ }
  {
3 T% ^; p4 W- X  String name = (String)list.get(i);
* i. F2 x  w1 r' G2 L5 `/ `  System.out.println(name);5 j1 _. k1 U% r4 e5 n
  }! Q! Z2 G* n. i  [- U5 D$ M$ E
  }如果要查询两个以上的属性桧以数组的方式返回,如下: public void HQLselectDEMO()
4 J- o2 }1 i! p* u. c8 z0 O( i' o. k6 S. g7 O
  {
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:37:28 | 显示全部楼层

JAVA基础:Hibernate数据查询(1)

</p>  TRegister user = new TRegister();( b5 D$ T  U3 ]* t  R) S2 R6 G
  Session session = HibernateUtil.currentSession();
& V6 ~: N; y6 n7 }  Query query = session.createQuery("select u.userName ,u.sex from TRegister u");
% V0 u( f2 M' x& H4 c/ `  O  List list = query.list();
' g8 }: T$ ?( y( w6 Z  for(int i = 0 ; i < list.size(); i++)
& S4 h* O/ r2 T9 Z- C/ Q* d  {) y" i/ V/ E: v7 e+ j
  Object obj[] = (Object[])list.get(i);
/ E8 L: M+ V% h1 |5 }9 p4 p, _  System.out.println(obj[0]+"  的性别是:"+obj[1]);: @, h) j- ?+ p( o
  }
2 J3 L6 E& o' u4 v  }6 `; D! V$ b) T5 R2 e3 @
  在使用属性查询时,由于使用对象数组,操作和理解不太方便,如果将 一个object[]中所有成员封装成一个对象就方便多了。下面的程序做了示例: public void HQLselectDEMO(), j- Y2 t6 ~* \+ S0 R+ Y% `) W% |
  {
/ m6 ?# @" l: n" n  Session session = HibernateUtil.currentSession();
6 W( z6 i% M# l  Query query = session.createQuery("select new TRegister(u.userName,u.sex) from TRegister u");
- L* z+ F0 U3 i+ o  t  List list = query.list();
# o7 J0 m7 B+ e5 `  for(int i = 0 ; i < list.size(); i++)
" c0 x6 A& d9 J" E2 ?. t( s  {
8 e2 {. {2 U% v6 n  a  //Object obj[] = (Object[])list.get(i);/ _: \. t* h2 x7 S" e. X5 r# e
  TRegister user = (TRegister)list.get(i);
* }, b& M, `* u: C- C5 N1 w7 o' H7 p  System.out.println(user.getUserName()+"  的性别是:"+user.getSex());5 F/ e- B+ Z* S/ H* M9 r- }7 e
  }
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 11:44 , Processed in 0.185262 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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