Hibernate 框架 -HQL 语法
HQL ( Hibernate Query Language ) 查询语言是面向对象的查询语言,也是在 Hibernate 中最常见的。其语法和 SQL 语法有一些相似,功能十分强大,几乎支持除特殊 SQL 扩展外的所有查询功能。此种查询方式为 Hibernate 官方推荐的标准查询方式。
以下我直接使用上一篇文章配置好的持久化类和工具类来写。
这篇文章我多以代码的形式来说明 HQL 语法的使用。
1、基本语法查询
// 基本语法
@Test
public void fun1() {
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
// -----------------------------------------------------
String hql = "from Customer";
Query query = session.createQuery(hql);
List<Customer> list = query.list();
System.out.println(list);
// -----------------------------------------------------
tx.commit();
session.close();
}
2、条件查询
// 条件查询
@Test
public void fun2() {
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
// -----------------------------------------------------
String hql = "from Customer where cust_id = ?";
String hql1 = "from Customer where cust_id = :id";//另外一种查询语句写法
Query query = session.createQuery(hql1);
// query.setParameter(0, 2l);
query.setParameter("id", 2l);
List<Customer> list = query.list();
System.out.println(list);
// -----------------------------------------------------
tx.commit();
session.close();
}
3、排序查询
// 排序
@Test
public void fun3() {
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
// -----------------------------------------------------
String hql = "from Customer order by cust_id asc";// asc:升序 desc:降序
Query query = session.createQuery(hql);
List<Customer> list = query.list();
System.out.println(list);
// -----------------------------------------------------
tx.commit();
session.close();
}
4、分页查询
// 分页查询
@Test
public void fun4() {
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
// -----------------------------------------------------
String hql = "from Customer";
Query query = session.createQuery(hql);
// 开始的下标=(当前页数-1)*每页条数
query.setFirstResult(0);
query.setMaxResults(3);
List<Customer> list = query.list();
System.out.println(list);
// -----------------------------------------------------
tx.commit();
session.close();
}
5、聚合函数查询
// 统计查询
// count
// sum
// avg
// max
// min @Test
public void fun5() {
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
// -----------------------------------------------------
String hql1 = "select count(*) from Customer"; // 统计条数
String hql2 = "select sum(cust_id) from Customer"; // 求和
String hql3 = "select avg(cust_id) from Customer"; // 求平均值
String hql4 = "select max(cust_id) from Customer"; // 求最大值
String hql5 = "select min(cust_id) from Customer"; // 求最小值
Query query = session.createQuery(hql3);
Number result = (Number) query.uniqueResult();
System.out.println(result); // -----------------------------------------------------
tx.commit();
session.close();
}
6、投影查询
// 投影查询
@Test
public void fun6() {
Session session = HibernateUtils.openSession();
Transaction tx = session.beginTransaction();
// -----------------------------------------------------
String hql1 = "select new Customer(cust_id,cust_name) from Customer";
Query query = session.createQuery(hql1);
List<Customer> list = query.list();
System.out.println(list);
// -----------------------------------------------------
tx.commit();
session.close();
}
以上查询都是单表查询,没有涉及多表查询,多表查询等我们熟悉好这几个查询,才继续学习多表查询。多表查询比单表查询复杂一点点。
Hibernate 框架 -HQL 语法的更多相关文章
- Hibernate框架HQL语句
这篇随笔将会记录hql的常用的查询语句,为日后查看提供便利. 在这里通过定义了三个类,Special.Classroom.Student来做测试,Special与Classroom是一对多,Class ...
- hibernate框架学习笔记10:HQL查询详解
HQL语句中不可以出现与表有关的内容,而是对象的属性 实体类(注意配置文件): package domain; import java.util.HashSet; import java.util.S ...
- hibernate框架学习之数据查询(HQL)
lHibernate共提供5种查询方式 •OID数据查询方式 •HQL数据查询方式 •QBC数据查询方式 •本地SQL查询方式 •OGN数据查询方式 OID数据查询方式 l前提:已经获取到了对象的OI ...
- Hibernate框架之HQL查询与Criteria 查询的区别
Hibernate框架提供了HQL查询和Criteria 查询.下面对这两种查询分别做个例子.也好对这两种查询方法有个大概的了解.就用房屋信息表做例子,查询所有房屋信息. HQL语句查询所有房屋信息: ...
- 用Hibernate框架把hql生成可执行的sql语句-Oracle方言
引言:为什么这样的需求,源自公司项目需要,公司的项目使用java的struts2+spring2.5+oracle中间件tuxedo,数据库用的是Oracle,但由于不直接连接数据库,用中间件处理的方 ...
- Java_Web三大框架之Hibernate+jsp+HQL分页查询
分页查询无处不在.使用Hibernate+jsp+HQL进行分页查询. 第一步:编写房屋实体类和House.hbm.xml映射. /* * 房屋实体类 */ public class House { ...
- hibernate框架
在之前的DAO开发中,对关系型数据库进行增删改查都是直接通过sql语句,需要人工的进行对象和表之间的转换.而Hibernate提供了对象和表之间进行映射的框架,使得这种转换更加方便. 1.ORM概念 ...
- Hibernate框架--配置,映射,主键
SSH框架: Struts框架, 基于mvc模式的应用层框架技术! Hibernate, 基于持久层的框架(数据访问层使用)! Spring, 创建对象处理对象的依赖关系以及框架整合! Da ...
- Hibernate框架进阶(上篇)
导读 前面一片文章介绍了Hibernate框架的入门,主要是讲解Hibernate的环境搭建和简单测试,有兴趣的童鞋出门左转.本文在入门的基础上进行Hibernate的进阶讲解,分为上中下三篇,本篇为 ...
随机推荐
- 【重磅资料】ArchSummit全球架构师峰会·2019华为云技术专场资料下载
ArchSummit全球架构师峰会是InfoQ中国团队推出的重点面向高端技术管理者.架构师的技术会议,54%参会者拥有8年以上工作经验.ArchSummit聚焦业界强大的技术成果,秉承"实践 ...
- Python中的Tcp协议应用之TCP服务端-线程版
利用线程实现,一个服务端同时服务多个客户端的需求. TCP服务端-线程版代码实现: import socket import threading def handle_client_socket(ne ...
- segment树(线段树)
线段树(segment tree)是一种Binary Search Tree或者叫做ordered binary tree.对于线段树中的每一个非叶子节点[a,b],它的左子树表示的区间为[a,(a+ ...
- 浅议Grpc传输机制和WCF中的回调机制的代码迁移
浅议Grpc传输机制和WCF中的回调机制的代码迁移 一.引子 如您所知,gRPC是目前比较常见的rpc框架,可以方便的作为服务与服务之间的通信基础设施,为构建微服务体系提供非常强有力的支持. 而基于. ...
- Go游戏服务端框架从零搭建(一)— 架构设计
五邑隐侠,本名关健昌,10年游戏生涯,现隐居海边. 本教程以Go语言分区游戏服务端框架搭建为例. Go语言是Google开发的一种静态强类型.编译型.并发型.具有垃圾回收功能的编程语言.语法上近似C语 ...
- 洛谷 3111 [USACO14DEC]牛慢跑Cow Jog_Sliver 题解
本蒟蒻又来发题解了, 一道较水的模拟题. 题意不过多解释, 思路如下: 在最开始的时候求出每头牛在t秒的位置(最终位置 然后,如果后一头牛追上了前一头牛,那就无视它, 把它们看成一个整体. else ...
- Seata AT 模式启动源码分析
从上一篇文章「分布式事务中间件Seata的设计原理」讲了下 Seata AT 模式的一些设计原理,从中也知道了 AT 模式的三个角色(RM.TM.TC),接下来我会更新 Seata 源码分析系列文章. ...
- mint UI MessageBox 使用
一.全局注册 1.在main.js中引入 //引入 import { MessageBox } from 'mint-ui'; //全局使用,挂载到原型上 Vue.prototype.$messa ...
- node.js调试入门
1-1 Inspector介绍 使用Inspector调试Node.js的优势 可查看当前上下文的变量 可观察当前函数调用堆栈 不侵入代码 可在暂停状态下执行指定代码 Inspector的构成以及原理 ...
- 洛谷P2569 (BZOJ1855)[SCOI2010]股票交易 【单调队列优化DP】
Description 最近lxhgww又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律. 通过一段时间的观察,lxhgww预测到了未来T天内某只股票的走势,第i天的股票买入价 ...