Hibernate相关的查询 --Hibernate框架基础
接着上一篇博文: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框架基础的更多相关文章
- 框架基础之Hibernate简介
框架基础之Hibernate简介 1.什么是Hibernate? Hibernate是一个开发源代码的对象关系映射框架,它对JDBC进行非常轻量级的对象封装,使得程序员可以随心所欲地使用对象编程思维来 ...
- Hibernate框架基础
Hibernate框架基础 Hibernate框架 ORM概念 O, Object 对象 R, Realtion 关系 (关系型数据库: MySQL, Oracle…) M,Mapping 映射 OR ...
- Hibernate基础学习(二)—Hibernate相关API介绍
一.Hibernate的核心接口 所有的Hibernate应用中都会访问Hibernate的5个核心接口. (1)Configuration接口: 配置Hibernate,启动Hi ...
- 框架之 hibernate之各种查询
1. Hibernate的查询方式 2. Hibernate的查询策略 案例:使用Hibernate完成查询所有联系人功能 需求分析 1. 完成所有的联系人的查询 技术分析之Hibernate框架的查 ...
- (转)Hibernate框架基础——一对多关联关系映射
http://blog.csdn.net/yerenyuan_pku/article/details/52746413 上一篇文章Hibernate框架基础——映射集合属性详细讲解的是值类型的集合(即 ...
- (转)Hibernate框架基础——映射主键属性
http://blog.csdn.net/yerenyuan_pku/article/details/52740744 本文我们学习映射文件中的主键属性,废话不多说,直接开干. 我们首先在cn.itc ...
- JavaWeb_(Hibernate框架)Hibernate中数据查询语句SQL基本用法
本文展示三种在Hibernate中使用SQL语句进行数据查询基本用法 1.基本查询 2.条件查询 3.分页查询 package com.Gary.dao; import java.util.List; ...
- JavaWeb_(Hibernate框架)Hibernate中数据查询语句Criteria基本用法
Criteria进行数据查询与HQL和SQL的区别是Criteria完全是面向对象的方式在进行数据查询,将不再看到有sql语句的痕迹,使用Criteria 查询数据包括以下步骤: 1. 通过sessi ...
- JavaWeb_(Hibernate框架)Hibernate中数据查询语句HQL基本用法
HQL(Hibernate Query Language) 是面向对象的查询语言, 它和 SQL 查询语言有些相似. 在 Hibernate 提供的各种检索方式中, HQL 是使用最广的一种检索方式. ...
随机推荐
- JS事件覆盖问题和触发问题
昨天遇到一个面试题,主要就是事件覆盖问题和触发问题 (不是打广告,无视文本内容) 总之这样的话,会输出三次“做自己的网站”. 为什么不是两次,而是输出三次呢? 1.首先onclick=function ...
- 【Python56--爬取妹子图】
爬取网站的思路 第一步:首先分析爬取网站的连接地址特性,发现翻页图片的时候连接:http://www.mmjpg.com/mm/1570 ,http://www.mmjpg.com/mm/1569, ...
- PowerDesigner 学习:十大模型及五大分类
个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...
- 配置Jenkins 实现自动发布maven项目至weblogic(svn+maven+weblogic12c)
Jenkins安装完成之后,需要我们对其配置,然后才可以实现自动部署项目. 前提 防火墙开放weblogic的7001端口 Linux(CentOS):firewall-cmd --zone=publ ...
- 待续未完- 自己写后台内容管理程序 - 用tp框架 和 前台 jquery ui等写的
在日常开发中,我们主要使用的还是 php 的 内部的 语言本身提供的函数/常量,系统内部数组等. 为了和后面的tp框架提供的 "系统函数.系统常量"相区别,把php提供的东西叫语言 ...
- R dataframe 列名包含减号,列名自动变为点
d<- data.frame(x = c(0, 1)) d<- data.frame(d, y = c(0,1)) names(d)[2]<- "a.-5" d ...
- (转载)C#工具箱Menustrip控件中分割线的设置方法
最近编C#程序,因为初学,不是太清楚,碰到了toolstripMenu中分割线设置的问题.遍寻中文网页,都是语言不详的,甚是呕人. 上网找了个外文网站,给的答案甚是详细,先贴在下面. http://w ...
- ps/kill/pkill简单应用
ps http://www.cnblogs.com/wangkangluo1/archive/2011/09/23/2185938.html 参数: 1)ps a 显示现行终端机下的所有程序,包括其他 ...
- jQuery中的$(window).load()与$(document).ready()以及jquery $(document).ready() 与window.onload的区别
大多数jQuery实例或教程都告诉我们绑定我们的jQuery代码到$(document).ready事件.虽然$(document).ready 事件在大多数情况下都OK,但是它的解析顺序是在文档准备 ...
- 【译】第4节---简单的Code First示例
原文地址:http://www.entityframeworktutorial.net/code-first/simple-code-first-example.aspx 假设我们要为XYZ学校创建一 ...
