HQL查询
来源:互联网 发布:网络投资平台可靠吗 编辑:程序博客网 时间:2024/05/29 04:15
--------------------siwuxie095
HQL 查询
1、HQL,即 Hibernate Query Language,它是 Hibernate 提供
的一种查询语言
2、HQL 和 SQL 很相似,区别在于:
(1)HQL 操作的是实体类和属性
(2)SQL 操作的是表和表中字段
3、常用的hql 语句
(1)基本查询:from 实体类名
(2)条件查询:from 实体类名 where 属性名 = ?
(3)排序查询:from 实体类名 order by 属性名 asc/desc
4、使用Query 对象实现 HQL 查询
(1)创建Query 对象,写 hql 语句
(2)调用Query 对象的方法得到结果
基本查询
以客户和联系人为例(一对多),下同
1、查询所有记录
(1)创建Query 对象,写 hql 语句
(2)调用Query 对象的方法得到结果
2、查询所有的hql 语句写法:from 实体类名
3、具体实现
/*
* (1)创建 Query对象
*
*调用 session的 createQuery()方法,参数是 hql
*语句,返回值是 Query类型,创建以接收
*/
Query query=session.createQuery("from Customer");
/*
* (2)调用方法得到结果
*
*调用 query的 list()方法,返回值是 List类型,
*创建以接收
*/
List<Customer> list=query.list();
条件查询
1、条件查询的hql 语句写法
(1)from 实体类名 where 属性名=? and 属性名=?
(2)from 实体类名 where 属性名 like ?
2、具体实现
(1)多条件查询
/*
* (1)创建 Query对象
*
*调用 session的 createQuery()方法,参数是 hql
*语句,返回值是 Query类型,创建以接收
*
* hql语句也可写作(as可以省略):
* from Customer as c where c.cid=? and c.custName=?
*/
Query query=session.createQuery("from Customer where cid=? and custName=?");
/*
* (2)设置条件
*
*向占位符 ?中设置值
*
*调用 query的 setParameter()方法
*
*和 JDBC不同,这里的参数位置从 0开始
*/
query.setParameter(0,1);
query.setParameter(1,"百度");
/*
* (3)调用方法得到结果
*
*调用 query的 list()方法,返回值是 List类型,
*创建以接收
*/
List<Customer> list=query.list();
(2)模糊查询
/*
* (1)创建 Query对象
*
*调用 session的 createQuery()方法,参数是 hql
*语句,返回值是 Query类型,创建以接收
*
* hql语句也可写作(as可以省略):
* from Customer as c where c.custName like ?
*/
Query query=session.createQuery("from Customer where custName like ?");
/*
* (2)设置条件
*
*向占位符 ?中设置值
*
*调用 query的 setParameter()方法
*
*和 JDBC不同,这里的参数位置从 0开始
*/
query.setParameter(0,"%度%");
/*
* (3)调用方法得到结果
*
*调用 query的 list()方法,返回值是 List类型,
*创建以接收
*/
List<Customer> list=query.list();
排序查询
1、排序查询的hql 语句写法
from 实体类名 order by 属性名 asc/desc
2、具体实现
/*
* (1)创建 Query对象
*
*调用 session的 createQuery()方法,参数是 hql
*语句,返回值是 Query类型,创建以接收
*/
Query query=session.createQuery("from Customer order by cid asc");
/*
* (2)调用方法得到结果
*
*调用 query的 list()方法,返回值是 List类型,
*创建以接收
*/
List<Customer> list=query.list();
分页查询
1、MySQL 实现分页查询
在sql 语句中使用limit 关键字
如:select * from t_customer limit 1,3
2、HQL 实现分页查询
(1)在hql 语句中不能写 limit
(2)Hibernate 的 Query 对象中封装了两个方法可以实现分页操作
3、具体实现
/*
* (1)创建 Query对象
*
*调用 session的 createQuery()方法,参数是 hql
*语句,返回值是 Query类型,创建以接收
*/
Query query=session.createQuery("from Customer");
/*
* (2)设置分页数据
*
*开始位置和每页的记录数
*/
query.setFirstResult(0);
query.setMaxResults(10);
/*
* (3)调用方法得到结果
*
*调用 query的 list()方法,返回值是 List类型,
*创建以接收
*/
List<Customer> list=query.list();
投影查询
1、投影查询:查询部分字段的值,而不是所有字段的值
2、投影查询的hql 语句写法
select 属性名1, 属性名2 from 实体类名
注意:select 后面不能写 *,即 不支持
3、具体实现
/*
* (1)创建 Query对象
*
*调用 session的 createQuery()方法,参数是 hql
*语句,返回值是 Query类型,创建以接收
*/
Query query=session.createQuery("select custName from Customer");
/*
* (2)调用方法得到结果
*
*调用 query的 list()方法,返回值是 List类型,
*创建以接收
*/
List<Object> list=query.list();
统计查询
1、常用的聚集函数:count、sum、avg、max、min
2、统计查询的 hql 语句写法
select 聚集函数(*) from 实体类名
3、具体实现
/*
* (1)创建 Query对象
*
*调用 session的 createQuery()方法,参数是 hql
*语句,返回值是 Query类型,创建以接收
*/
Query query=session.createQuery("select count(*) from Customer");
/*
* (2)调用方法得到结果
*
*调用 query的 uniqueResult()方法,返回值是 Object类型,
*创建以接收
*/
Object obj=query.uniqueResult();
/*
*注意:不能直接把 obj转成 int类型,需要先转成 Long类型
*
* Long val=(Long) obj;
* int valx=val.intValue();
*/
【made by siwuxie095】
- HQL查询
- HQL查询
- hql查询
- HQL查询
- hql 查询
- HQL查询
- HQL查询
- hql 查询
- hql查询
- HQL查询
- HQL查询
- hql查询~
- HQL查询
- hql查询~
- hql查询
- hql查询
- HQL查询
- HQL查询
- JavaEE面试题库分类及答案之三
- 西安集训第二天---状压dp
- 自动生成广告代码
- HDOJ1398 母函数题目
- 实习项目三总结
- HQL查询
- 图像处理之Matlab特征提取和表达
- 5-6 集合相似度 (25分)
- Excel在统计分析中的应用—第六章—概率分布及概率分布图-Part2-离散型概率分布(二项分布函数CRITBINOM的应用)
- <转>将Django models 和views拆分程多个文件
- ASL Code中的_DSM方法
- 在Linux下访问Windows共享目录的配置方法
- 高效能人士的七个习惯简介
- 网络攻击技术开篇——SQL Injectio