Chinaunix首页 | 论坛 | 博客
  • 博客访问: 194750
  • 博文数量: 76
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 490
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-12 16:58
文章分类

全部博文(76)

文章存档

2011年(3)

2010年(52)

2009年(21)

我的朋友

分类: Java

2010-07-22 11:29:34

HQL(Hibernate Query Language)
面向对象的查询语言,与sql不同,hql中的对象名是区分大小写的(除了java和属性其它部分不区分大小写);hql中查的是对象而不是表,并且支持多态;hql主要通过Query来操作。
使用步骤:
1.写hql
String hql = "from User user where user.name = ";
hql可以是:
-from Person(Person是类名,不是表名,这句会去查Person以及它所有的子类)
-from User user where user.name = ?(user是别名,跟sql里面的别名类似)
-from User user where user.name = ? and user.birthday < ?
-from User user where user.name = :name (:name为匿名参数)
*HQL支持多态,因此“from Object”会去查所有表,因为对象都是Object的子类。

2.Query的创建:
Query q = session.createQuery(hql);

3.设置参数:
q.setString(0,name);//下标从0开始,对应设置“?”的参数
或者
q.setString("name", name); //对应设置匿名参数“:name”,推荐使用这种

4.设置分页
setFirstResult(0);//从第0行记录开始取
setMaxResults(10);//最多取多少行记录
可实现跨数据库的分页功能

5.进行查询
List list = query.list(); //跟executeQuery();作用类似
*若确定查询结果只有一个,可以使用Object obj = query.uniqueResult();,这样可以跳过下面遍历数据的步骤;若结果不止一个,使用这句的话会报异常。


6.遍历数据
for(User user : list){
   System.out.println(user.getName());
}

阅读(1126) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~