Hibernate的批量查询——HQL
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的更多相关文章
- Hibernate的批量查询
Hibernate的查询大致分为以下三种场景, 1. HQL查询-hibernate Query Language(多表查询,但不复杂时使用) 2. Criteria查询(单表条件查询) 3. ...
- Hibernate的批量查询——Criteria查询所有、条件、分页、统计(聚合函数)、排序
1.查询所有的学生信息: public static void testSel() { Session session = HibernateUtils.openSession(); Transact ...
- Hibernate的批量查询——原生sql查询
1.查询所有的学生信息: (1)查询结果中,一条信息放入到一个数组中,从list集合中取出数组,并对数组进行遍历. public class GeneratorTest { public static ...
- Hibernate(十三)命名查询-批量处理和调用存储过程
一.命名查询 HQL语句混杂在代码之间将破坏代码的可读性 Hibernate允许在映射配置文件中定义字符串形式的查询语句,这种查询方式称为命名查询 二.建立数据表和持久化类 建立数据表 create ...
- Hibernate的查询语言之HQL(二)——Hibernate查询的from字句
from 是最简单的HQL语句,也是最基本的HQL语句.from 关键字后紧跟持久化类的类名.例如: from Person 表明从Person持久化类中取出全部的实例. 大部分时候,推荐位该Pers ...
- J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate())
J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate()) 当我们使用Hibernate进行数据的CRUD操作时,利用模版进行操作不失为一种方法. ...
- 二。Hibernate 查询 HQL、SQL方式
hibernate的查询1.HQL方式:所有查询都是根据java对象名来完成,对象名替换表名2.SQL方式:保留原来的sql查询风格3.可以通过设置第一条和最大条数来实现各种数据库的分页查询4.通过B ...
- 【JAVAEE学习笔记】hibernate02:实体规则、对象状态、缓存、事务、批量查询和实现客户列表显示
一.hibernate中的实体规则 实体类创建的注意事项 1.持久化类提供无参数构造 2.成员变量私有,提供共有get/set方法访问.需提供属性 3.持久化类中的属性,应尽量使用包装类型 4.持久化 ...
- Hibernate Query Language查询:
Hibernate Query Language查询: Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Language)查询提供 ...
随机推荐
- 关于mpvue编写小程序的坑
在引入第三方UI时 百度了很多方法,对于第一次接触的,在我们写vue的页面需要添加main.json 同时在写文件时,要在最后不要加 “,” !!!并且在微信小程序会出现路径报错 在微信小程序中点击 ...
- 前端开发神一样的工具chrome调试技巧
前端开发神一样的工具chrome调试技巧 文章来自 Colin-UED // 与您分享前端开发知识 主页 Javascript HTML CSS NodeJs User Experience FE ...
- ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)(转载)
本文结构 ASP.NET Core应用程序的构建 ASP.NET Core应用程序容器化所需注意的问题 应用程序的配置信息 端口侦听 ASP.NET Core的容器版本 docker镜像构建上下文(B ...
- php 获取当前IP地址
function getIP() { return isset($_SERVER["HTTP_X_FORWARDED_FOR"])?$_SERVER["HTTP_X_FO ...
- FileUpload上传多张照片
<asp:FileUpload ID="uploaderInput" runat="server" multiple="multiple&quo ...
- 2019 边锋游戏java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.边锋游戏等公司offer,岗位是Java后端开发,因为发展原因最终选择去了边锋游戏,入职一年时间了,也成为了面 ...
- Fedora搭dokuwiki的步骤 以apache2.4为例
官网下载dokuwiki的包,解压到/var/www/html/下 修改dokuwiki的权限.拥有者/组 为apache 安装PHP 在/etc/httpd/conf 创建dokuwiki的配置文件 ...
- HTML5 新增文本标签
一.mark 标记文本 <mark> 标签定义带有记号的文本,表示页面中需要突出显示或高亮显示的信息. 通常在引用原文的时候使用 mark 元素,目的是引起当前用户的注意. 语法格式: & ...
- 金融finaunce财经
金融 (经济学术语) 金融是货币资金融通的总称.主要指与货币流通和银行信用相关的各种活动.主要内容包括: 货币的发行.投放.流通和回笼:各种存款的吸收和提取:各项贷款的发放和收回:银行会计.出纳.转账 ...
- Cheat Engine 特征码
打开游戏 引用自动注入 搜索特征码 特征码,是游戏运行中,唯一的汇编代码 验证,特征码是游戏中唯一代码 添加特征码 添加特征码,以及金钱只增不减代码 进行激活测试 特征码,只有在游戏过程中才会执行到 ...