使用HQL须要四步java
获得Sessionweb
编写HQL语句数据库
建立Query对象(Query接口是HQL 查询接口。它提供了各类的查询功能)session
执行查询,获得结果ui
sessionFactory =new Configuration().configure().buildSessionFactory(); session = sessionFactory.openSession(); String hql = “from test”; Query query = session.createQuery(hql); List<Street> list = query.list();
HQL使用:spa
使用命名参数:Hibernate使用命名参数与JDBC查询参数?类似,可是Hibernate参数不容易引发混乱。若是使用JDBC查询参code
数,那么每当添加、修改或删除SQL语句的内容时,都必须更新那些设置参数的Java代码,由于要根据参数在语句中出现的次序识orm
别它们。对象
一个简单的命名参数参数示例以下:接口
String hql = "from product where price > :price"; Query query = session.createQuery(hql); query.setDouble("price",25.0); List results = query.list();
使用hql进行分页,
Query接口中有两个用于分页的方法:setFirstResult()和setMaxResults()。setFirstResult()方法接受一个整数,这个整数表示结果
集中的第一行,编号从0开始。能够使用setMaxResults()方法让Hibernate只返回固定数量的对象。
简单示例以下:
Query query = session.createQuery("from product"); query.setFirstResult(1); query.setMaxResults(20); List result = query.list();
获取惟一的结果:
uniqueResult()方法,能够使用它从一个HQL查询中只获取一个对象。若是要从多个结果集中返回第一个结果,须要使用
setMaxResults()方法,不然会返回NonUniqueResultException异常,若是查询结果中没有相应的结果,则返回null
简单示例以下:
String hql="from product where price > : price"; Query query = session.createQuery(hql); query.setDouble("price","25.0"); query.setMaxResults(1); product product = (product) query.uniqueResult();
补充:
HQL的用法是查询对象,而不是数据库,好比JAVA bean是User,对应的数据库为t_user,此时HQL语句应为 from User而非from t_user,另外,若是要加参数,要加单引号