HQL查询

1 hql:hibernate query language,hibernate提供一种查询语言,hql语言和普通sql很相似,区别:普通sql操作数据库表和字段,hql操作实体类和属性

2 常用的hql语句

(1)查询所有: from 实体类名称

(2)条件查询: from 实体类名称 where 属性名称=?

(3)排序查询: from 实体类名称 order by 实体类属性名称 asc/desc

3 使用hql查询操作时候,使用Query对象

(1)创建Query对象,写hql语句

(2)调用query对象里面的方法得到结果

查询所有

1 查询所有客户记录

(1)创建Query对象,写hql语句

(2)调用query对象里面的方法得到结果

2 查询所有: from 实体类名称

具体:

//演示查询所有
@Test
public void testSelect1() {
SessionFactory sessionFactory = null;
Session session = null;
Transaction tx = null;
try {
sessionFactory = HibernateUtils.getSessionFactory();
session = sessionFactory.openSession();
tx = session.beginTransaction();
//1 创建query对象
Query query = session.createQuery("from Customer");
//2 调用方法得到结果
List<Customer> list = query.list();
for (Customer customer : list) {
System.out.println(customer.getCid()+"::"+customer.getCustName());
}
tx.commit();
}catch(Exception e) {
tx.rollback();
}finally {
session.close();
sessionFactory.close();
}
}

条件查询

1 hql条件查询语句写法:

(1)  from  实体类名称 where 实体类属性名称=? and实体类属性名称=?

from  实体类名称 where 实体类属性名称 like ?

2 代码

            //1 创建query对象
//SELECT * FROM t_customer WHERE cid=? AND custName=?
Query query = session.createQuery("from Customer c where c.cid=? and c.custName=?");
/**
*2 设置条件值
* 向?里面设置值
* setParameter方法两个参数
* 第一个参数:int类型是?位置,?位置从零开始
* 第二个参数:具体参数值
*/
//设置第一个?值
query.setParameter(0, 1);
//设置第二个?值
query.setParameter(1, "小李");
//3 调用方法得到结果
List<Customer> list= query.list();
for(Customer customer : list) {
System.out.println(customer.getCid() + ":" + customer.getCustName());
}

模糊查询

            //1 创建query对象
//SELECT * FROM Customer c c.custName LIKE '%新浪%'
Query query = session.createQuery("from Customer c where c.custName like ?");
//2 设置?的值
// %浪%
query.setParameter(0, "%浪%");
//3 调用方法得到结果
List<Customer> list= query.list();
for (Customer customer : list) {
System.out.println(customer.getCid() + ":"+ customer.getCustName());
}

排序查询

1 hql排序语句写法

(1)from 实体类名称 order by 实体类属性名称 asc/desc

        //1 创建query对象
//SELECT * FROM t_customer ORDER BY cid ASC
Query query = session.createQuery("from Customer c order by cid asc");
//2 调用方法得到结果
List<Customer> list= query.list();
for (Customer customer : list) {
System.out.println(customer.getCid() + ":"+ customer.getCustName());
}

分页查询

1 mysql实现分页

(1)使用关键字 limit实现

0表示从0开始,3表示每页显示3条记录

2 在hql中实现分页

(1)在hql操作中,在语句里面不能写limit,hibernate的Query对象封装两个方法实现分页操作

        //1 创建query对象
//写查询所有的语句
Query query = session.createQuery("from Customer");
//2 设置分页数据
//2.1设置开始位置
query.setFirstResult(0);
//2.2设置每页记录数
query.setMaxResults(3);
//3 调用方法得到结果
List<Customer> list = query.list();
for (Customer customer : list) {
System.out.println(customer.getCid() + ":"+ customer.getCustName());
}

投影查询

1 投影查询:查询不是所有字段值,而是部分字段的值

2 投影查询hql语句写法:

(1)select 实体类属性名称1, 实体类属性名称2  from 实体类名称

(2)select 后面不能写 * ,不支持的

3 具体实现

        //1 创建query对象
Query query = session.createQuery("select custName from Customer");
//2 调用方法得到结果
List<Object> list = query.list();
for (Object object : list) {
System.out.println(object);
}

聚集函数使用

1 常用的聚集函数

(1)count、sum、avg、max、min

2 hql聚集函数语句写法

(1)查询表记录数

- select count(*) from 实体类名称

        //1 创建query对象
Query query = session.createQuery("select count(*) from Customer");
//2 调用方法得到结果
//query对象里面有方法,直接返回对象形式
Object obj = query.uniqueResult();
//返回int类型
// int count = (int) obj;
//首先把object变成long类型,再变成int类型
Long lobj = (Long) obj;
int count = lobj.intValue();
System.out.println(count);

Hibernate_day04--HQL查询的更多相关文章

  1. Hibernate--------八大类HQL查询集合

    Hibernate的   八大类HQL查询集合 Hibernate的八大类HQL查询集合: 一:属性查询(SimplePropertyQuery) 1,单一属性查询 *返回结果集属性列表,元素类型和实 ...

  2. [NHibernate]HQL查询

    目录 写在前面 文档与系列文章 查询的几种方式 HQL查询 一个例子 总结 写在前面 上篇文章介绍了nhibernate在项目中的基本配置,包括数据库连接字符串的设置,映射文件的配置及需注意的地方,这 ...

  3. hibernate学习(7)——HQL查询

    1.HQL查询定义 Hibernate查询分类: 1. get/load 根据OID检索 2. 对象视图检索 c.getOrders 3. Sql语句 createSqlQuery 4. Hql语句 ...

  4. HQL查询——聚集函数

    HQL查询--聚集函数 HQL也支持在选出的属性上使用聚集函数.HQL支持的聚集函数与SQL的完全相同: (1)avg:计算属性平均值: (2)count:统计选择对象的数量: (3)max:统计属性 ...

  5. HQL查询——关联和连接

    HQL查询--关联和连接 为了便于理解有关的使用关联和连接进行HQL查询,首先提供两个具有关联关系的持久化类:Person类和MyEvent类 Person类: import javax.persis ...

  6. HQL查询——from子句

    HQL查询--from子句 1.from是最基本的HQL语句,from关键字后紧跟持久化类的类名: from Person 表示从Person持久化类中选出全部的实例. 2.推荐为持久化类的每个实例起 ...

  7. HQL查询——HQL查询的基本用法

    HQL查询--HQL查询的基本用法 1.HQL语法类似于SQL语法,但是需要注意的是,HQL是一种完全面向对象的查询语言.SQL语言操作的对象是数据表.列等数据库对象,而HQL语言的操作对象是类.实例 ...

  8. 转: Hibernate HQL查询 插入 更新(update)实例

    1.实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql=”from User user ”;List list=session.CreateQuery(hq ...

  9. NHibernate系列文章二十二:NHibernate查询之HQL查询(附程序下载)

    摘要 NHibernate提供了多种查询方式,最早的HQL语言查询.Criteria查询和SQL Query,到NHibernate 3.0的Linq NHibernate,NHIbernate 4. ...

  10. HQL查询语句

    查询语言 Hibernate 查询语言(HQL)是一种面向对象的查询语言,类似于 SQL,但不是去对表和列进行操作,而是面向对象和它们的属性. HQL 查询被 Hibernate 翻译为传统的 SQL ...

随机推荐

  1. 站点CSS样式不起作用,或仅仅有一部分起作用?随手记

    事件:网页中使用了相同的样式,下半部分正常显示,上半部分样式所有丢失不能显示. 解决:改动了相应的CSS样式文件的编码 这个是最没有想到的解决的方法. 怎样调试:通过右键页面查看编码为UTF-8 或 ...

  2. SCF: 简单配置门面

    SCF: 简单配置门面 [English]  [中文] Simple Configuration Facade, 简写为 SCF.是 代码 和 外部配置 (properties文件, 环境变量,系统/ ...

  3. Redis全方位讲解--哨兵模式(Sentinel模式)(转载)

    前言 当按照上一篇<redis主从复制>部署好之后,我们会想,一旦redis的master出现了宕机,并且我们并没有及时发现,这时候就可能会出现数据丢失或程序无法运行.此时,redis的哨 ...

  4. Windows快捷键命令

    1. 新建一个文件夹: Ctrl + shift + N; 2. Windows 查看端口信息: 1.进入cmd窗口; 2.netstat -ano : 列出所有端口的情况.在列表中我们观察被占用的端 ...

  5. Mysql 创建表和删除表

    在数据库中创建一张表的基本语法如下: CREATE TABLE tablename (column_name_1 column_type_1 constraints, column_name_2 co ...

  6. tbnet编译

    下载tbnet 下载地址:http://code.taobao.org/p/tb-common-utils/src/trunk/tbnet/ ,它的svn地址为:http://code.taobao. ...

  7. atitit.词法分析的实现token attilax总结

    atitit.词法分析的实现token attilax总结 1. 词法分析(英语:lexical analysis)跟token 1 1.1. 扫描器 2 2. 单词流必须识别为保留字,标识符(变量) ...

  8. 单页应用SPA做SEO的一种清奇的方案

    单页应用SPA做SEO的一种清奇的方案 网上有好几种单页应用转seo的方案,有服务端渲染ssr.有预渲染prerender.google抓AJAX.静态化...这些方案都各有优劣,开发者可以根据不同的 ...

  9. swift的UITableView的使用

    UITableView是app开发中经常使用到的控件,功能非常强大,多用于数据的显示. 以下以一个简单的实例来介绍其基本使用方法. 先建一个project 代码例如以下: import UIKit c ...

  10. Spring学习11-Spring使用proxool连接池 管理数据源

    Spring 一.Proxool连接池简介及其配置属性概述   Proxool是一种Java数据库连接池技术.是sourceforge下的一个开源项目,这个项目提供一个健壮.易用的连接池,最为关键的是 ...