HQL:实用技术
一:使用HQL语句
Hibernate支持三种查询方式:
(1.)HQL查询,Criteriac查询及原生SQL(Native SQL)查询。HQL(Hibernate Query Language,Hibernate查询语言)是一种面向对象的查询语言,其中没有表和字段的概念,只有类对象,属性的概念。
二:编写HQL语句
From子句
Select子句
Where子句
使用表达式
Order by 子句:示例:升序排序:from Emp order by hireDate salary desc;
执行HQL语句的步骤:
获取Session 对象
编写HQL语句
创建Query对象:Query query =session.oreateQuery(?);
执行查询,得到查询结果
三:在SQL语句中绑定参数
按位置绑定参数
Query query=session.createQuery(“from Emp where job=? And salary>?”);
按参数名绑定
Query query=session.createQuery(“from Emp where job=:empJob and salary>:empSalary”);
绑定各种类型的参数:Query接口提供
(1.)setBoolean();
(2.)setByte();
(3.)setDouble();
(4.)setDate();
(5.)setString();
(6.)setParameter();用来绑定任意类型。
(7.)setProperties();用来绑定参数与一个对象的属性值。
4.使用uniqueResult()方法获取唯一结果
四:分页和投影
实现数据分页查询
通过Query接口的setFirstResult(int firstResult)方法和setMaxResults(int maxResults)方法实现。分别返回最大和最小记录。
使用投影查询
*每条查询结果仅包含一个结果列:
Public ListfindAllNames(){
String hql=”select deptName from Dept”;
Return currentSession().createQuery(?).list();//省略其它内容
}
*查询每条结果包含不止一个结果列:
Public ListfindAllNames(){
String hql=”select deptNo,deptName from Dept”;
Return currentSession().createQuery(?).list();//省略其它内容
}
*将每条查询结果通过构造方法封装成对象
Public class DeptDao extends BaseDao{
//要求Dept类中有Dept(Byte deptNo,String deptName)和Dept()构造方法
Public List findAllDeptList(){
String hql=”select new Dept(deptNo,deptName)from Dept”;
Return currentSession().createQuery(?).list();//省略其它内容
}
}
打开App,阅读手记