是一种hibernate查询语言,是hibernate识别的数据库查询语言。
是一种面向对象的查询语言,没有表,字段的概念只用对象属性的概念。
因为hibernate存在方言,hibernate按照方言的指定将HQL查询转化成所对应的不同的数据库环境语言
使用HQL进行查询避免JDBC的复杂步骤,只需要四部
1、 得到session
2、编写HQL语句
3、 创建Query对象
4、执行查询,得到结果,结果是一个list
例:
public static void main(String[]
args) {
// 编写查询语句
// --Street是实体类的类名,而不是数据库里面的名字,区分大小写
// String sql="select *
from Street as street ";
// String sql = "from Street ";// 等价于上sql
// --h.title中title是House对象的属性而非数据库中title字段
String hql = "from House as h where h.title like '%' and
h.floorage between 1 and 50000";
// 打开一个session
Session session =
HibernateSessionFactory.getSession();
// 创建query
Query query = session.createQuery(hql);
// 执行查询--返回一个封装好的list,它根据ORM映射查询后找到对应的实体进行了封装
List<House> streetList = query.list();
session.close();
for (int i = 0; i <
streetList.size(); i++) {
System.out.println(streetList.get(i).getTitle()
+"~~"+ streetList.get(i).getFloorage());
}
}
Where子句:
String hql = "from House as h where h.title like '%x%' and
h.floorage between 1 and 50000";
(部分)属性查询:
例1、public List<Users> findByName(String name) {
// String hql =
// "select
u.id,u.telephone from Users as u where u.name like '%"
// + name + "%'";
String hql = "select new Users(u.id,u.telephone)
from Users as u where u.name like '%"//封装成对象,实体中必须有和此封装对应的构造函数
+ name + "%'";
Session session = super.getSession();
Query query = session.createQuery(hql);
List<Users> list = query.list();
session.close();
return list;
}
public static void main(String[] args) {
List<Users> list = new
UsersDaoImpl().findByName("a");
for (int i = 0; i < list.size(); i++) {
Users items = list.get(i);
System.out.println(items.getId() + " " + items.getTelephone());
}
}
参数绑定:
:name命名参数,根据此参数名进行参数设定
例2:
public List<House> findByTitleAndFloorage(String title, int floorage) {
String hql = "from House
as h where h.title like :title and h.floorage=:floorage";
Session session = super.getSession();
Query query = session.createQuery(hql);
query.setString("title", "%"+title+"%");
query.setInteger("floorage", floorage);
List<House> houseList = query.list();
session.close();
return houseList;
}
HQL常用聚合函数
Count()
public long computeHouseCount(int userId){
String hql="select count(h.id) from House as h where
h.userId=?";
Session session=super.getSession();
Query query=session.createQuery(hql);
query.setInteger(0, userId);
List list= query.list();
//int ret=(Integer)list.get(0);
long
ret=(Long)query.uniqueResult();//得到一个值
session.close();
return ret;
}
Max() min()
select
max(h.price),min(h.price) from House as h
select h from House
as h where datepart(yyyy,h.pubdate)=?
Avg() sum()
分组
分页
Query实现简单的分页
setFirstResult(int fr),记录第一条记录的位置(pageIndex-1)*pageSize
setMaxResult(int mr)设置最大返回记录数 pageSize
例:
/**
* 分页查询
*/
public List<House> findAll(int pageNo, int pageSize) {
String hql="from House as h order by h.pubdate desc";
Session session=super.getSession();
Query query=session.createQuery(hql);
query.setMaxResults(pageSize);
query.setFirstResult((pageNo-1)*pageSize);
List<House> houseList=query.list();
return houseList;
}
分享到:
相关推荐
### HQL实用技术知识点概述 #### 一、配置关联关系 **1.1 单向一对多关联关系** - **定义**: 单向一对多关联指的是一个父对象可以拥有多个子对象,但子对象并不知道它的父对象是谁。 - **配置方法**: - 在父对象...
HQL 实用技术
根据给定的文件信息,我们可以深入探讨HQL(Hibernate Query Language)在查询数据库记录总数中的应用,以及如何在Java环境中使用...通过深入理解和熟练掌握HQL查询技巧,可以显著提高数据库操作的效率和程序的健壮性。
### HQL查询及语法详解 ...总之,掌握HQL对于任何从事Java Web开发的技术人员来说都是至关重要的。它不仅提高了数据库操作的效率,还使得代码更加简洁、易于理解和维护,是连接Java对象世界与数据库世界的桥梁。
### Hibernate 课件_HQL 知识点解析 #### HQL查询 ...这些知识点涵盖了HQL的基本概念、查询方法、各种高级查询技巧以及Session的管理等方面,希望能够帮助大家更好地理解和掌握Hibernate的HQL查询技术。
- 《Java Persistence with Hibernate》:由Christian Bauer等人编写的书籍,涵盖了Hibernate的高级主题,包括HQL的高级使用技巧。 总之,Hibernate和HQL是现代Java应用程序中不可或缺的一部分,了解并熟练掌握这些...
- **批量更新**:对于批量更新操作,可以使用HQL的`UPDATE`语句。例如,要更新所有用户的密码,可以执行如下HQL语句: ```java String hql = "UPDATE User SET password = :newPassword WHERE id = :userId"; ...
根据提供的文件信息,本文将详细解析HQL(Hibernate Query Language)中的模糊查询技术,并通过具体的代码示例来阐述不同方式下的实现方法。 ### HQL模糊查询概述 HQL是Hibernate框架提供的一种面向对象的查询语言...
这意味着,HQL允许使用类名和属性名来代替表名和列名,使得查询更符合面向对象的编程思想。 SQL则是一种纯粹的关系型查询语言,它的设计完全围绕着关系型数据库的概念,如表、列、行等。SQL查询通常直接针对数据库...
HQL允许开发者使用类似SQL的语法进行数据库操作,但更贴近于面向对象的编程思想。本文将深入探讨HQL多表查询的核心概念、语法结构以及实际应用案例。 ### HQL多表查询的基础概念 HQL支持多种查询方式,包括单表...
**Hibernate HQL 全攻略** Hibernate Query Language(HQL)是Hibernate框架提供的面向对象的查询语言,它允许开发者以类和属性的名称进行查询,...学习并实践这些HQL技巧,将极大地提升你在Java持久层开发中的能力。
本文档基于魔乐科技李兴华老师的 Hibernate 教程笔记进行整理与扩展,主要介绍了 Hibernate 的数据检索方法,特别是 HQL(Hibernate Query Language)的使用技巧。 #### 二、HQL 基础 HQL 是一种面向对象的查询语言...
对于大数据量的情况,推荐使用分页技术。 **代码示例:** ```java public List<Item> getAllItems(int pageNo, int pageSize) { Session session = this.getCurrentSession(); String hql = "FROM Item"; Query...
本篇文章将深入探讨HQL(Hibernate Query Language)中的分页技术,结合源码分析和实用工具,帮助你理解和实现HQL的分页功能。 HQL是Hibernate框架提供的面向对象的查询语言,它类似于SQL,但直接操作对象和类,而...
在Spring框架与Hibernate技术结合使用时,HQL(Hibernate Query Language)作为对象查询语言被广泛应用于数据查询操作之中。本文将详细解析Spring框架中常用的HQL查询方法及其应用场景。 #### 一、find(String ...
《HQL语言教程[归类].pdf》是一个关于Hibernate Query Language(HQL)的详细教程,专注于面向对象的查询技术。HQL是Hibernate框架中用于检索和操作对象关系映射数据的强大工具,其语法和SQL有诸多相似之处,但设计...
而HQL则是NHibernate提供的一种查询语言,它允许开发人员使用类似于SQL的语法来查询数据库,同时保持了面向对象的特性。 ### NHibernate HQL条件查询详解 #### QBC(Query By Criteria)与HQL对比 在NHibernate中...
我们可以使用以下HQL查询: ```hql SELECT cat, mate, kittens FROM Cat as cat LEFT JOIN FETCH cat.mate as mate LEFT JOIN FETCH cat.kittens as kittens WHERE cat.type = '特定类型' ``` 在这个查询中,我们...
与传统的 JDBC 方式相比,使用 HQL 进行数据库查询更加便捷、高效且易于维护。 #### 二、HQL 与 SQL 的区别 - **面向对象**:HQL 主要是基于对象的查询,而 SQL 是基于表的查询。 - **语法差异**:虽然 HQL 的语法...