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. 阿里云RDS实例内不同数据库之间的数据迁移

    适用场景 本文适用于使用DTS实现相同实例下库名不同的数据库之间的数据迁移.本文以使用DTS将同一RDS实例下的amptest库迁移到jiangliu_amptest库为例来说明如何使用DTS实现相同 ...

  2. 利用pandas进行数据分析之二:DataFrame与Series数据结构对比

    Series与DataFrame对比学习 文章为本人原创,未经同意请勿转载,http://www.cnblogs.com/smallcrystal/ Series:构建的方法,一组数组(列表或元组), ...

  3. windows设置默认打印机

    实现这个功能需要使用windows api [DllImport("winspool.drv")] public static extern bool SetDefaultPrin ...

  4. SortedDictionary<TKey,TValue>正序与反序排序及Dicttionary相关

    SortedDictionary<TKey,TValue>能对字典排序 using System; using System.Collections.Generic; using Syst ...

  5. unity, EventType.MouseUp注意事项

    如果鼠标移出了窗口范围,则即使鼠标抬起也不会收到EventType.MouseUp消息,所以只写 if(event==EventType.MouseUp){ 执行某操作 } 是错误的,会导致非常奇怪的 ...

  6. 又是一年WWDC,暨回想去年之旅——Part III

    前言 无论这篇写到哪里,就以这篇作为结尾,结束这个流水回想系列文了. Computer History Museum 计算机历史博物馆(站点)是在Google旁边,參观Google之前的行程. 记得那 ...

  7. Windows 7 Path环境变量255限制的解决办法,SUBST

    C:\Users\xxx>subst /? Associates a path with a drive letter. SUBST [drive1: [drive2:]path] SUBST ...

  8. 【Android】15.4 例15-2--Notification基本用法

    分类:C#.Android.VS2015: 创建日期:2016-02-29 一.简介 上一节介绍了通知(Notification)相关的基本内容.这一节先用一个简单示例演示创建和发布本地通知的基本用法 ...

  9. HotSpot模板解释器目标代码生成过程源码分析

    虽然说解释执行模式是逐字逐句翻译给目标平台运行的,但这样的过程未免太过缓慢,如果能把字节码说的话做成纸条,运行时只要把对应的纸条交给目标平台就可以了,这样,执行速度就会明显提升.JVM的Hotspot ...

  10. 关于C与python交互设想及文章汇总

    gui: gtk by c 后台: python Python实例浅谈之三Python与C/C++相互调用 Python 与 C/C++ 交互的几种方式 C语言 + GTK3+ Visual Stud ...