接着上一篇博文:Hibernate第一个程序(最基础的增删改查) --Hibernate本例是对Hibernate查询的扩展,使用HQL语句查询

/**
* HQL添加预先需要保存的测试数据
*/
@Test
public void test_01() {
  Session session = HbnUtils.getSession();
  try {
    session.beginTransaction();
    Student student1 = new Student("貂蝉", 24, 99);
    Student student2 = new Student("王昭君", 22, 93);
    Student student3 = new Student("杨玉环", 28, 94);
    Student student4 = new Student("李师师", 26, 95);
    Student student5 = new Student("苏小小", 20, 96);
    Student student6 = new Student("李师师", 25, 96);
    Student student7 = new Student("唐伯虎", 21, 91);
    Student student8 = new Student("祝枝山", 21, 92);
    session.save(student1);
    session.save(student2);
    session.save(student3);
    session.save(student4);
    session.save(student5);
    session.save(student6);
    session.save(student7);
    session.save(student8);
    session.getTransaction().commit();
  } catch (Exception e) {
// TODO: handle exception
    session.getTransaction().rollback();
    e.printStackTrace();
  }
}

/**
* 使用HQL语句查询信息并且通过升序排列
*/
@Test
public void test_02() {
  Session session = HbnUtils.getSession();
  try {
    session.beginTransaction();
    String hql = "from Student order by tscore asc";
    List<Student> list = session.createQuery(hql).list();
    for (Student student : list) {
    System.out.println(student);
  }
  session.getTransaction().commit();
  } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    session.getTransaction().rollback();
  }
}

/**
* 使用SQL语句查询学生信息并且通过升序排列(对比HQL可忽略)
*/
@Test
public void testSQL_01() {
  Session session = HbnUtils.getSession();
  try {
    session.beginTransaction();
    String sql = "select *from t_student order by tscore asc";
    List<Student> list = session.createSQLQuery(sql).addEntity(Student.class).list();
    for (Student student : list) {
    System.out.println(student);
  }
  session.getTransaction().commit();
  } catch (Exception e) {
  // TODO: handle exception
    e.printStackTrace();
    session.getTransaction().rollback();
  }
}

/**
* HQL动态参数绑定查询(占位符)
*/
@Test
public void test_04() {
  Session session = HbnUtils.getSession();
  try {
    session.beginTransaction();
    String hql = "from Student where age>? and score<?";
    List<Student> list = session.createQuery(hql).setInteger(0, 25).setDouble(1, 97).list();
    for (Student student : list) {
    System.out.println(student);
  }
    session.getTransaction().commit();
  } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    session.getTransaction().rollback();
  }
}

/**
* HQL动态参数绑定查询別名的方式
*/
@Test
public void testQuery_HQL_04() {
Session session = HbnUtils.getSession();
  try {
    session.beginTransaction();
    String hql = "from Student where age>:myage and score<:myscore";
    List<Student> list = session.createQuery(hql)
    .setParameter("myage", 25).setParameter("myscore", 97.0)// 必須是97.0
    .list();
    for (Student student : list) {
    System.out.println(student);
  }
  session.getTransaction().commit();
  } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    session.getTransaction().rollback();
  }
}

/**
* HQL分页查询
*/
@Test
public void test_05() {
  Session session = HbnUtils.getSession();
  try {
    session.beginTransaction();
    String hql = "from Student";
    List<Student> list =session.createQuery(hql)
    .setFirstResult(1)
    .setMaxResults(3)
    .list();
    for (Student student : list) {
     System.out.println(student);
    }
  session.getTransaction().commit();
  } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    session.getTransaction().rollback();
  }
}

/**
* SQL分页查询(对比,忽略即可)
*/
@Test
public void testSql_06() {
  Session session = HbnUtils.getSession();
  try {
    session.beginTransaction();
    String sql = "select *from t_student limit ?,?";
    List<Student> list =session.createSQLQuery(sql)
    .addEntity(Student.class)
    .setInteger(0, 1)//从第5条数据开始
    .setInteger(1, 3)
    .list();
    for (Student student : list) {
      System.out.println(student);
    }
  session.getTransaction().commit();
  } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    session.getTransaction().rollback();
  }
}

/**
* HQL模糊查询
*/
@Test
public void testQuery_SQL_07() {
  Session session = HbnUtils.getSession();
  try {
    session.beginTransaction();
    String hql = "from Student where tname like :myname";
    List<Student> list =session.createQuery(hql)
    .setString("myname", "%王%")
    .list();
    for (Student student : list) {
      System.out.println(student);
    }
    session.getTransaction().commit();
  } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    session.getTransaction().rollback();
  }
}

/**
* HQL唯一性查询
*/
@Test
public void testQuery_SQL_08() {
  Session session = HbnUtils.getSession();
  try {
    session.beginTransaction();
    String hql = "from Student where tid = :myid";
    Student student =(Student) session.createQuery(hql)
    .setInteger("myid", 1)
    .uniqueResult();
    System.out.println(student);
    session.getTransaction().commit();
  } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    session.getTransaction().rollback();
  }
}

/**
* 聚合函数查询
*/
@Test
public void testQuery_HQL_06() {
  Session session = HbnUtils.getSession();
  try {
    session.beginTransaction();
    String hql = "SELECT COUNT(*) from Student";
    Long count = (Long) session.createQuery(hql).uniqueResult();
    System.out.println(count);// 输出结果有多少条数据
    session.getTransaction().commit();
  } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    session.getTransaction().rollback();
  }
}

/**
* 投影查询
*/
@Test
public void testQuery_HQL04() {
  Session session = HbnUtils.getSession();
  try {
    session.beginTransaction();
    String hql = "select new Student(name,age) from Student";// 将查询到的字段通过构造方法封装到对象,然后保存在list中
    List<Student> list = session.createQuery(hql).list();
    for (Student student : list) {
      System.out.println(student);// 只查询到name、age信息,其他则为默认
    }
    session.getTransaction().commit();
  } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    session.getTransaction().rollback();
  }
}

/**
* HQL分组查询 :查每个年龄段的第一个人
*/
@Test
public void testQuery_HQL05() {
  Session session = HbnUtils.getSession();
  try {
    session.beginTransaction();
    String hql = "from Student group by age";
    List<Student> list = session.createQuery(hql).list();
    for (Student student : list) {
      System.out.println(student);
    }
    session.getTransaction().commit();
  } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    session.getTransaction().rollback();
  }
}

/**
* HQL分组查询:查询有几个年龄段
*/
@Test
public void testQuery_HQL06() {
  Session session = HbnUtils.getSession();
  try {
    session.beginTransaction();
    String hql = "select age from Student group by age";
    List<Integer> list = session.createQuery(hql).list();
    System.out.println(list);
    session.getTransaction().commit();
  } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    session.getTransaction().rollback();
  }
}

/**
* HQL分组查询:查询多于1人的年龄段
*/
@Test
public void testQuery_HQL07() {
  Session session = HbnUtils.getSession();
    try {
    session.beginTransaction();
    String hql = "select age from Student group by age having count(age) > 1";
    List<Integer> list = session.createQuery(hql).list();
    System.out.println(list);
    session.getTransaction().commit();
    } catch (Exception e) {
      // TODO: handle exception
      e.printStackTrace();
      session.getTransaction().rollback();
    }
}

附:个人网站www.nxl123.cn(后台采用Python Flask框架搭建,2019年1月1日将升级完成并正式启用。哎,本人是学生狗呢!网站做的不好希望大家多多提意见或建议吧!?别骂我就好!……以后SEO什么的还得多向大家学习……)

Hibernate相关的查询 --Hibernate框架基础的更多相关文章

  1. 框架基础之Hibernate简介

    框架基础之Hibernate简介 1.什么是Hibernate? Hibernate是一个开发源代码的对象关系映射框架,它对JDBC进行非常轻量级的对象封装,使得程序员可以随心所欲地使用对象编程思维来 ...

  2. Hibernate框架基础

    Hibernate框架基础 Hibernate框架 ORM概念 O, Object 对象 R, Realtion 关系 (关系型数据库: MySQL, Oracle…) M,Mapping 映射 OR ...

  3. Hibernate基础学习(二)—Hibernate相关API介绍

    一.Hibernate的核心接口      所有的Hibernate应用中都会访问Hibernate的5个核心接口.      (1)Configuration接口: 配置Hibernate,启动Hi ...

  4. 框架之 hibernate之各种查询

    1. Hibernate的查询方式 2. Hibernate的查询策略 案例:使用Hibernate完成查询所有联系人功能 需求分析 1. 完成所有的联系人的查询 技术分析之Hibernate框架的查 ...

  5. (转)Hibernate框架基础——一对多关联关系映射

    http://blog.csdn.net/yerenyuan_pku/article/details/52746413 上一篇文章Hibernate框架基础——映射集合属性详细讲解的是值类型的集合(即 ...

  6. (转)Hibernate框架基础——映射主键属性

    http://blog.csdn.net/yerenyuan_pku/article/details/52740744 本文我们学习映射文件中的主键属性,废话不多说,直接开干. 我们首先在cn.itc ...

  7. JavaWeb_(Hibernate框架)Hibernate中数据查询语句SQL基本用法

    本文展示三种在Hibernate中使用SQL语句进行数据查询基本用法 1.基本查询 2.条件查询 3.分页查询 package com.Gary.dao; import java.util.List; ...

  8. JavaWeb_(Hibernate框架)Hibernate中数据查询语句Criteria基本用法

    Criteria进行数据查询与HQL和SQL的区别是Criteria完全是面向对象的方式在进行数据查询,将不再看到有sql语句的痕迹,使用Criteria 查询数据包括以下步骤: 1. 通过sessi ...

  9. JavaWeb_(Hibernate框架)Hibernate中数据查询语句HQL基本用法

    HQL(Hibernate Query Language) 是面向对象的查询语言, 它和 SQL 查询语言有些相似. 在 Hibernate 提供的各种检索方式中, HQL 是使用最广的一种检索方式. ...

随机推荐

  1. os模块,os.path模块,subprocess模块,configparser模块,shutil模块

    1.os模块 os表示操作系统该模块主要用来处理与操作系统相关的操作最常用的文件操作打开 读入 写入 删除 复制 重命名 os.getcwd() 获取当前执行文件所在的文件夹路径os.chdir(&q ...

  2. 【python003-变量】

    变量 一.在使用变量之前,需要先对其进行赋值 二.变量命名的规则:可以包含字母,数字,下划线,但是不能以数字开头 三.字符串: 1.引号内的一切东西 2.python的字符串是要在两边加上引号,对于单 ...

  3. freeswitch源码安装

    1.源码--安装依赖: yum install -y http://files.freeswitch.org/freeswitch-release-1-6.noarch.rpm epel-releas ...

  4. hdfoo站点开发笔记-2

    httpd的目录的 Options: (里面的单词都是用的复数): Options Indexes FollowSymLinks 为了避免有些目录下没有生成deny.htm而显示列表, 可以直接给 / ...

  5. Java8 函数式接口-Functional Interface

    目录 函数式接口: JDK 8之前已有的函数式接口: 新定义的函数式接口: 函数式接口中可以额外定义多个Object的public方法一样抽象方法: 声明异常: 静态方法: 默认方法 泛型及继承关系 ...

  6. Graph Convolutional Networks (GCNs) 简介

    Graph Convolutional Networks 2018-01-16  19:35:17 this Tutorial comes from YouTube Video:https://www ...

  7. Mapreduce 历史服务 配置启动查看

    如果没有进行配置的话,那个History是不可以进行点击的,点击进去就会报错!所以需要进行配置一下 使用命令启动HistoryServer 就可以查看任务执行的进度了 命令: sbin/mr-jobh ...

  8. 接口Interface的四种含义

    摘自<需求分析与系统设计(第3版)>第七章Q5 1. GUI——显示信息的计算机屏幕(注:其他终端) 2. API——是一套软件程序和开发工具,为应用程序提供函数调用,使程序可以访问一些级 ...

  9. FPGA 概述2

    参考1 参考2:浅论各种调试接口(SWD.JTAG.Jlink.Ulink.STlink)的区别 以下数据仅供参考 文章概要 主流FPGA厂商及产品 相同设计在FPGA与ASIC中耗费器件数量比较 F ...

  10. Entity Framework Core导航属性加载问题

    前言 今天下午在开发的时候发现EF Core实体模型中的导航属性为 null,经排查既不是没有加 virtual 关键字,也不是外键关系映射错误. 解决方法 通过查询官网文档,发现,原因在于EF Co ...