HQL(Hibernate Query Language)查询:

1、查询所有学生信息:

public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="from pers.zhb.domain.Student";
Query query= session.createQuery(hql);
List<Student>list=query.list();
System.out.println(list);
transaction.commit();
session.close();//游离状态
}

简化写法:

 public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="from Student";
Query query= session.createQuery(hql);
List<Student> list=query.list();
System.out.println(list);
transaction.commit();
session.close();//游离状态
}

查询所有表的数据:

 public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="from java.lang.Object";
Query query= session.createQuery(hql);
List<Object> list=query.list();
System.out.println(list);
transaction.commit();
session.close();//游离状态
}

2、条件查询(查询所有的女学生的信息):

public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="from pers.zhb.domain.Student where sex='女'";
Query query= session.createQuery(hql);
List<Student>list=query.list();
System.out.println(list);
transaction.commit();
session.close();//游离状态
}

3、问号占位符的使用:

public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="from pers.zhb.domain.Student where studentno=?";
Query query= session.createQuery(hql);
query.setInteger(,);
Student student= (Student) query.uniqueResult();//获取唯一值
System.out.println(student);
transaction.commit();
session.close();
}
 public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="from pers.zhb.domain.Student where sex=?";
Query query= session.createQuery(hql);
//query.setFetchSize(0,"女");
query.setParameter(,"女");//通用
List<Student> list=query.getResultList();
System.out.println(list);
transaction.commit();
session.close();
}

4、命名占位符:

省去了用数字指明属性位置的麻烦,直接用属性名代替。

public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="from pers.zhb.domain.Student where sex=:sex";
Query query= session.createQuery(hql);
query.setParameter("sex","女");//通用
List<Student> list=query.getResultList();
System.out.println(list);
transaction.commit();
session.close();
}

5、分页查询:

需要指明从哪开始,要取几条数据:

  public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="from pers.zhb.domain.Student where sex=:sex";
Query query= session.createQuery(hql);
query.setFirstResult();//从0开始
query.setMaxResults();//抓取两条数据
query.setParameter("sex","女");//通用
List<Student> list=query.getResultList();
System.out.println(list);
transaction.commit();
session.close();
}

6、排序查询:

(1)按学号升序排列:

public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="from pers.zhb.domain.Student order by studentno asc";
Query query= session.createQuery(hql);
List<Student> list=query.list();
System.out.println(list);
transaction.commit();
session.close();//游离状态
}

(2)分数降序:

 public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="from pers.zhb.domain.Student order by point desc ";
Query query= session.createQuery(hql);
List<Student> list=query.list();
System.out.println(list);
transaction.commit();
session.close();//游离状态
}

7、统计查询:

(1)count:

 public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="select count(*) from pers.zhb.domain.Student";
Query query= session.createQuery(hql);
Number number= (Number) query.uniqueResult();
System.out.println(number);
transaction.commit();
session.close();//游离状态
}

(2)sum求所有学生的分数和:

  public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="select sum(point) from pers.zhb.domain.Student";
Query query= session.createQuery(hql);
Number number= (Number) query.uniqueResult();
System.out.println(number);
transaction.commit();
session.close();//游离状态
}

(3)avg求平均分:

 public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="select avg(point) from pers.zhb.domain.Student";
Query query= session.createQuery(hql);
Number number= (Number) query.uniqueResult();
System.out.println(number);
transaction.commit();
session.close();//游离状态
}

(4)min求最低分:

 public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="select min(point) from pers.zhb.domain.Student";
Query query= session.createQuery(hql);
Number number= (Number) query.uniqueResult();
System.out.println(number);
transaction.commit();
session.close();//游离状态
}

8、投影:

(1)查询每个学生的名字:

public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="select sname from pers.zhb.domain.Student";
Query query= session.createQuery(hql);
List list= query.list();
System.out.println(list);
transaction.commit();
session.close();//游离状态
}

(2)查询学生的姓名和学号:

创建构造方法(用于存储姓名和学号):

 public Student(Integer studentno,String sname){
super();
this.studentno=studentno;
this.sname=sname;
}
public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
String hql="select new Student(studentno,sname) from pers.zhb.domain.Student";
Query query= session.createQuery(hql);
List<Object[]> list= query.list();
System.out.println(list);
transaction.commit();
session.close();//游离状态
}

Hibernate的批量查询——HQL的更多相关文章

  1. Hibernate的批量查询

    Hibernate的查询大致分为以下三种场景, 1. HQL查询-hibernate Query Language(多表查询,但不复杂时使用)    2. Criteria查询(单表条件查询) 3. ...

  2. Hibernate的批量查询——Criteria查询所有、条件、分页、统计(聚合函数)、排序

    1.查询所有的学生信息: public static void testSel() { Session session = HibernateUtils.openSession(); Transact ...

  3. Hibernate的批量查询——原生sql查询

    1.查询所有的学生信息: (1)查询结果中,一条信息放入到一个数组中,从list集合中取出数组,并对数组进行遍历. public class GeneratorTest { public static ...

  4. Hibernate(十三)命名查询-批量处理和调用存储过程

    一.命名查询 HQL语句混杂在代码之间将破坏代码的可读性 Hibernate允许在映射配置文件中定义字符串形式的查询语句,这种查询方式称为命名查询 二.建立数据表和持久化类 建立数据表 create ...

  5. Hibernate的查询语言之HQL(二)——Hibernate查询的from字句

    from 是最简单的HQL语句,也是最基本的HQL语句.from 关键字后紧跟持久化类的类名.例如: from Person 表明从Person持久化类中取出全部的实例. 大部分时候,推荐位该Pers ...

  6. J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate())

    J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate())   当我们使用Hibernate进行数据的CRUD操作时,利用模版进行操作不失为一种方法. ...

  7. 二。Hibernate 查询 HQL、SQL方式

    hibernate的查询1.HQL方式:所有查询都是根据java对象名来完成,对象名替换表名2.SQL方式:保留原来的sql查询风格3.可以通过设置第一条和最大条数来实现各种数据库的分页查询4.通过B ...

  8. 【JAVAEE学习笔记】hibernate02:实体规则、对象状态、缓存、事务、批量查询和实现客户列表显示

    一.hibernate中的实体规则 实体类创建的注意事项 1.持久化类提供无参数构造 2.成员变量私有,提供共有get/set方法访问.需提供属性 3.持久化类中的属性,应尽量使用包装类型 4.持久化 ...

  9. Hibernate Query Language查询:

    Hibernate Query Language查询: Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Language)查询提供 ...

随机推荐

  1. 什么是SQL ?

    SQL 1.什么是SQL ? Structured Query Languange:结构化查询语言 其实就是定义了操作所有关系型数据库的规则.每一种数据库操作的方式存在不一样的地方,称为“方言”. 2 ...

  2. MySQL数据类型之BLOB与TEXT及其最大存储限制

    https://blog.csdn.net/q3dxdx/article/details/51014357 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.n ...

  3. mysql 中的日期格式。date_format( ) 转换格式

    date_format( ) 转换格式 : 格式 描述 %a 缩写星期名 %b 缩写月名 %c 月,数值 %D 带有英文前缀的月中的天 %d 月的天,数值(00-31) %e 月的天,数值(0-31) ...

  4. 记一次Spring boot集成mybatis错误修复过程 Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

    最近自己写了一份代码签入到github,然后拉下来运行报下面的错误 Error starting ApplicationContext. To display the conditions repor ...

  5. MFC 解决绘图时闪烁问题的一点经验

    2015-05 由于作图过于复杂和频繁,所以时常出现闪烁的情况,一些防止闪烁的方法,如下: (1)将Invalidate()替换为InvalidateRect(). Invalidate()会导致整个 ...

  6. zynq7020开发板+ Z-turn调试计划

    参加米尔zynq7020开发板试用活动. 收到米尔z-turn板子后,焊接了一个JTAG转接板,以方便调试PL部分,对于后面的调试部分,主要分三个部分走:1.调试FPGA部分,实现逻辑控制外围简单的设 ...

  7. C# 后台服务器端 Get 请求函数封装

    请求参数封装 /// <summary> /// 拼接 Get请求参数 /// </summary> /// <param name="parames" ...

  8. Vue学习之全局和私有组件小结(七)

    一.组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用相应的组件即可. 二.组件和模块: 1.模块化:是从代码逻 ...

  9. 89.canvas制作爱心

    <!DOCTYPE html> <html> <head>     <title>JavaScript和html53D玫瑰花(程序员的情人节礼物)< ...

  10. 基础的python数据分析

    1. 单行注释 #print("hello word;") 2. 多行注释 ''' print("hello word;") print("hello ...