HQL及Query使用简介
时间:2010-07-22 来源:CS_FB4
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<User> list = query.list(); //跟executeQuery();作用类似
*若确定查询结果只有一个,可以使用Object obj = query.uniqueResult();,这样可以跳过下面遍历数据的步骤;若结果不止一个,使用这句的话会报异常。
6.遍历数据
for(User user : list){
System.out.println(user.getName());
}