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. java自定义异常和throw、throws的使用

    一.自定义异常类 我们知道所有的异常都是Exception,所以我们需要自定义异常只需要继承那个Exception类就可以了.下面我们自定义一个异常类,代码如下: /** * 自定义异常, */ // ...

  2. 我的第一个netcore2.2 api项目搭建(一)

    早早就想入门netcore,一直没下定决心,这次正好碰上项目服务变更,便想着入坑试试,边学边用. 目标: 一.api使用core版的SqlSugar,集成orm,实现快速开发 二.api使用Swagg ...

  3. Quartz.net使用笔记

    一.需求场景:每天固定时间执行某个行为/动作. 一开始想用定时器,后来无意间发现了这个插件,感觉功能太强大了,完美解决了我的问题. 二.下载地址:https://www.quartz-schedule ...

  4. Elasticsearch DSL 常用语法介绍

    课程环境 CentOS 7.3 x64 JDK 版本:1.8(最低要求),主推:JDK 1.8.0_121 Elasticsearch 版本:5.2.0 相关软件包百度云下载地址(密码:0yzd):h ...

  5. windows下vmware和Hyper-v共存方法

    问题描述:环境:windows server 2012 r2系统下安装Hyper-v后,再安装Vmware 在Vmware中创建虚拟机,安装虚拟机系统的时候,vmware提示:VMware Works ...

  6. Java IO---序列化和反序列化

    一.序列化和反序列化介绍 什么是序列化和反序列化? ​ 序列化就是将对象转换为字节序列的过程. ​ 反序列化就是将字节序列恢复为对象的过程. 序列化的用途在哪? 通常情况下,序列化有两个用途: 将对象 ...

  7. 异常---Day21(写得有错请指出,感谢)

    异常的概念 异常,就是不正常的意思.在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是:指的是程序在执行过程中,出现的非正常的情况,终会导致J ...

  8. MybatisGenerator生成SSM的dao层

    官网下载 mybatis generator 下载generator的release版本mybatis-generator-core-1.4.0-bundle.zip https://github.c ...

  9. 在微信小程序中使用redux

    本文主要讲述,在微信小程序中如何使用redux DEMO 需要解决的问题 如何在小程序中引入redux状态管理库,及它相关的插件? 微信小程序没有清晰的异步api,便于thunkMiddleware处 ...

  10. Jmeter如何测试接口

    现在对测试人员的要求越来越高,不仅仅要做好功能测试,对接口测试的需求也越来越多!所以也越来越多的同学问,怎样才能做好接口测试? 要真正的做好接口测试,并且弄懂如何测试接口,需要从如下几个方面去分析问题 ...