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)查询提供 ...
随机推荐
- bypass-media 模式30秒挂断
语音正常,但是通话30秒后自动挂断, 服务器为阿里云,专网模式 修改ext-sip-ip 为公网ip
- Codeforces Round #584 (Div. 1 + Div. 2)
Contest Page A sol 每次选最小的,然后把它的所有倍数都删掉. #include<bits/stdc++.h> using namespace std; int read( ...
- 菜刀连接一句话木马出现:`Cannot call assert() with string argument dynamically`错误
前言 逆天还是上学那会玩渗透的,后来工作后就再也没碰了,所以用的工具还是以前经典款,这不,发现出问题了 问题 如果是PHP5则没有问题,如果是PHP7,会出现:Cannot call assert() ...
- Prometheus监控学习笔记之Grafana用户权限分组
Grafana有账户分权和管理功能,不过和一般的账户分权管理操作不一样.Grafana通过admin账户建立organization,在不通的org内配置数据源和用户,用户隶属于不通的org,只能看到 ...
- C# yield checked,unchecked lock语句(C#学习笔记04)
特殊语句 yield语句 yield用于终止迭代 只能使用在返回类型必须为 IEnumerable.IEnumerable<T>.IEnumerator 或 IEnumerator< ...
- Windows 搭建 nginx rtmp服务器
1.环境开发环境:windows开发工具:ffmpeg.nginx.nginx-rmtp-module.vlc media player播放器 2.准备文件官方ffmpeg下载地址:http://ww ...
- [Linux] TMUX Python版本设置
TMUX Python版本设置 本地mac的终端已经设置python版本为python3.7, 结果进入tmux时,一直时python2.7. # 本地.bash_profile alias pyth ...
- zynq开发板外设配置演示
有幸得到米尔电子zynq系列开发板Z-turn Board试用体验,下面说说我这款zynq系列的Z-TURN板子外设配置.从Z-turn Board原理图上看,目前可以配置的FPGA管脚大概有100多 ...
- Beego 学习笔记11:文件的上传下载
文件的上传和下载 1->文件的上传 文件的上传,采用的是uploadify.js这个插件. 本事例实现的是上传图片文件,其他的文件上传也一样. 2->文件的下载 文件的下载有两个实现的方式 ...
- android studio学习----构建编译
项目创建成功后会自动下载Gradle,这个过程特别慢,建议翻墙.下载的Gradle在Windows平台会默认在 C:\Documents and Settings\<用户名>.gradle ...