Hibernate中的QBC查询方式详解
Hibernate中的QBC查询方式详解
QBC:Query By Criteria,条件查询。
是一种更加面向对象化的查询的方式。
1、QBC简单查询
测试代码:
package com.pipi.hibernate05;import com.pipi.hibernate04.Dept;
import myutils.HibernateUtil;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;import java.util.List;// QBC简单查询:查询表中所有记录
public class Test01_QBC {public static void main(String[] args) {Session session = HibernateUtil.getCurrentSession();Transaction transaction = session.beginTransaction();// 简单查询Criteria criteria = session.createCriteria(Dept.class);List<Dept> list = criteria.list();for (Dept d : list) {System.out.println(d);}transaction.commit();}
}
(2)QBC排序查询
测试代码:
package com.pipi.hibernate05;import com.pipi.hibernate04.Dept;
import myutils.HibernateUtil;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;import java.util.List;// QBC排序查询
public class Test02_QBC {public static void main(String[] args) {Session session = HibernateUtil.getCurrentSession();Transaction transaction = session.beginTransaction();// 排序查询Criteria criteria = session.createCriteria(Dept.class);//criteria.addOrder(Order.asc("deptno")); // 升序criteria.addOrder(Order.desc("deptno")); // 降序List<Dept> list = criteria.list();for (Dept d : list) {System.out.println(d);}transaction.commit();}
}
(3)QBC分页查询
测试代码:
package com.pipi.hibernate05;import com.pipi.hibernate04.Emp;
import myutils.HibernateUtil;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;import java.util.List;// QBC的分页查询
public class Test03_QBC {public static void main(String[] args) {Session session = HibernateUtil.getCurrentSession();Transaction transaction = session.beginTransaction();// 分页查询Criteria criteria = session.createCriteria(Emp.class);criteria.setFirstResult(0);criteria.setMaxResults(5);List<Emp> list = criteria.list();for (Emp e : list) {System.out.println(e);}transaction.commit();}
}
(4)QBC条件查询
测试代码:
package com.pipi.hibernate05;import com.pipi.hibernate04.Emp;
import myutils.HibernateUtil;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;import java.util.List;
/*criteria.add(Restrictions.xxx())= eq> gt>= ge< lt<= le<> nelikeinandorbetween*/
// QBC的条件查询
public class Test04_QBC {public static void main(String[] args) {Session session = HibernateUtil.getCurrentSession();Transaction transaction = session.beginTransaction();// 条件查询Criteria criteria = session.createCriteria(Emp.class);criteria.add(Restrictions.like("ename", "Smi%"));//criteria.add(Restrictions.or(Restrictions.eq("job", "Clerk")));criteria.add(Restrictions.eq("job", "Clerk"));List<Emp> list = criteria.list();for (Emp e : list) {System.out.println(e);}transaction.commit();}
}
(5)QBC统计分组查询
测试代码:
package com.pipi.hibernate05;import com.pipi.hibernate04.Emp;
import myutils.HibernateUtil;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Projections;// QBC的统计分组查询
public class Test05_QBC {public static void main(String[] args) {Session session = HibernateUtil.getCurrentSession();Transaction transaction = session.beginTransaction();Criteria criteria = session.createCriteria(Emp.class);/*add : 普通的条件,where后面的条件addOrder : 排序setProjection : 聚合函数 和 group by having*/criteria.setProjection(Projections.rowCount());Long cnt = (Long) criteria.uniqueResult();System.out.println(cnt); // 14transaction.commit();}
}
(6)QBC离线条件查询:DetachedCriteria
什么是QBC离线查询?
往往在Web层时,就可以设置QBC语句,及查询条件。
但在Web层是没有Session对象的,Session是Dao层的。
此时可以使用离线查询DetachedCriteria对象。
测试代码:
package com.pipi.hibernate05;import com.pipi.hibernate04.Emp;
import myutils.HibernateUtil;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;import java.util.List;// QBC离线条件查询:DetachedCriteria
public class Test06_QBC {public static void main(String[] args) {// 在创建Session对象之前,就可以创建DetachedCriteria,并设置条件DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Emp.class);detachedCriteria.add(Restrictions.eq("ename", "Smith"));// 创建Session对象Session session = HibernateUtil.getCurrentSession();Transaction transaction = session.beginTransaction();// 将DetachedCriteria对象与Session绑定,返回Criteria对象Criteria criteria = detachedCriteria.getExecutableCriteria(session);List<Emp> list = criteria.list();for (Emp e : list) {System.out.println(e);}transaction.commit();}
}
Hibernate中的QBC查询方式详解相关推荐
- python编程midi键盘按键_Python中捕获键盘的方式详解
python中捕获键盘操作一共有两种方法 第一种方法: 使用pygame中event方法 使用方式如下:使用键盘右键为例 if event.type = pygame.KEYDOWN and even ...
- python获取键盘按键_Python中捕获键盘的方式详解
python中捕获键盘操作一共有两种方法 第一种方法: 使用pygame中event方法 使用方式如下:使用键盘右键为例 if event.type = pygame.KEYDOWN and even ...
- hibernate(七) hibernate中查询方式详解
序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等,如果不明白,可以先去看一下 MySQL数 ...
- Hibernate学习之路(十三):Hibernate中的QBC查询和本地sql操作
什么是hibernate的QBC查询 QBC 查询就是通过使用 Hibernate 提供的 Query By Criteria API 来查询对象,这种 API 封装了 SQL 语句的动态拼装,对查询 ...
- MySQL约束条件和多表查询方式详解
一.约束 什么是约束? 简述:除了数据类型以外的约束的 为什么使用约束? 简述:为了保证数据的合法性 完整性: 二.约束分类: not null 跟整型时使用其作用是限制插入数据不能为空 create ...
- 操作系统中的IO控制方式详解
IO简介 IO就是Input和Output的简称,也就是输入输出.主要包括磁盘IO.网络IO.键盘输入,显示器输出.USB等操作. 输入是从IO设备输入到内存中,输出是从内存中输出到IO设备中. IO ...
- android中几种定位方式详解
目录 前言: 1.GPS定位 2.NETWORK定位 3.AGPS定位 4.基站定位 5.WIFI定位 6.混合定位 目前,移动端大致通过三种方式来进行设备定位:GPS.基站.wifi.本文就详细的讲 ...
- VirtualBox中的网络连接方式详解
如果出现主机无法ping通虚拟机的情况,请首先确认虚拟机防火墙已关闭. 一.NAT模式 特点: 1.如果主机可以上网,虚拟机可以上网 2.虚拟机之间不能ping通 3.虚拟机可以ping通主机(此时p ...
- php中 继承中的概念,JavaScript_JavaScript中的继承方式详解,js继承的概念
js里常用的如下 - phpStudy...
JavaScript中的继承方式详解 js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于 ...
最新文章
- 三个优秀的语义分割框架 PyTorch实现
- 使用游戏测试干式EEG传感器的有效性
- .Net Core Configuration源码探究
- 【Jmeter篇】1小时轻松搞定项目接口自动化测试与数据驱动
- Docker 学习5 Docker容器网络
- 文件解压和压缩io流
- Android——简单模拟银行转账
- Vue的axios封装
- EXCEL VBA窗口快捷键冲突查找原因
- 记录:web前端高德API获取天气服务
- 论文复现:Expressive Body Capture
- java斜体_设置标签字体用粗体和斜体
- SpringCloud SpringBoot b2b2c 微服务 多商家入驻直播商城之Git 远程仓库(Github)
- 网易云linux版本如何安装包,网易云音乐linux版下载-网易云音乐linux 安装包v1.1.0 官方版 - 极光下载站...
- 开发用于互操作性的应用程序_云标准:确保云应用互操作性的工具
- python向量点乘_Python线性代数学习笔记——向量的点乘与几何意义,实现向量的点乘操作...
- 实验楼原型系统设计-1
- Flowable 流程实例的挂起(暂停)与激活
- Xshell中鼠标选中内容自动换行ctrl+c解决办法
- Winlogon登录和GINA