Hibernate的批量查询——Criteria查询所有、条件、分页、统计(聚合函数)、排序
1、查询所有的学生信息:
public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
Criteria criteria=session.createCriteria(Student.class);
List<Student>list= criteria.list();
System.out.println(list);
transaction.commit();
session.close();
}

2、条件查询:
运算符与对应的英文缩写:
> gt >=ge <lt <=le ==eq
!=ne in:in between and::between
like:like is not null:isNotNull
or:or and:and
(1)eq的运用:
public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
Criteria criteria=session.createCriteria(Student.class);
criteria.add(Restrictions.eq("sex","女"));
List<Student>list= criteria.list();
System.out.println(list);
transaction.commit();
sessio

(2)like的运用:
public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
Criteria criteria=session.createCriteria(Student.class);
criteria.add(Restrictions.like("sname","许__"));
List<Student>list= criteria.list();
System.out.println(list);
transaction.commit();
session.close();
}

3、分页查询:
需要事先设置起始位置和查询的数量。
public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
Criteria criteria=session.createCriteria(Student.class);
criteria.add(Restrictions.eq("sex","女"));
criteria.setFirstResult();
criteria.setMaxResults();
List<Student>list= criteria.list();
System.out.println(list);
transaction.commit();
session.close();
}

4、总记录数的获取:
public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
Criteria criteria=session.createCriteria(Student.class);
criteria.setProjection(Projections.rowCount());//聚合函数获得总行数
Long rowNum= (Long) criteria.uniqueResult();
System.out.println(rowNum);
List<Student>list= criteria.list();
System.out.println(list);
transaction.commit();
session.close();
}

5、排序:
升序:
public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
Criteria criteria=session.createCriteria(Student.class);
criteria.addOrder(Order.asc("studentno"));
List<Student>list= criteria.list();
System.out.println(list);
transaction.commit();
session.close();
}

降序:
public static void testSel() {
Session session = HibernateUtils.openSession();
Transaction transaction = session.beginTransaction();
Criteria criteria=session.createCriteria(Student.class);
criteria.addOrder(Order.desc("studentno"));
List<Student>list= criteria.list();
System.out.println(list);
transaction.commit();
session.close();
}

5、Criteria 和 DetachedCriteria的区别
Criteria 和 DetachedCriteria 的主要区别在于创建的形式不一样, Criteria 是在线的,所以它是由 Hibernate Session 进行创建的;而 DetachedCriteria 是离线的,创建时无需Session。
例如下面的条件查询代码写在servlet中,没有与session进行连接:
String cust_name = request.getParameter("cust_name");
DetachedCriteria dc = DetachedCriteria.forClass(Customer.class);
if(cust_name!=null && !"".equals(cust_name)){
dc.add(Restrictions.like("cust_name", "%"+cust_name+"%"));
}
Hibernate的批量查询——Criteria查询所有、条件、分页、统计(聚合函数)、排序的更多相关文章
- NHibernate初学三之条件查询(Criteria Queries)与AspNetPager分页实例
NHibernate除了SQL与HQL两种查询操作外,还有一种就是条件查询Criteria,本文将从网上整理一些Criteria的理论及小实例,最后通过一个结合AspNetPager分页来加深理解,必 ...
- 大数据入门到精通16--hive 的条件语句和聚合函数
一.条件表达 case when ... then when .... then ... when ... then ...end select film_id,rpad(title,20," ...
- Hibernate里面如何使用DetachedCriteriaCriteria 实现多条件分页查询
WEB层: // 获取分页的请求参数 String start = request.getParameter("start"); String page = request.get ...
- Hibernate(十二)Criteria查询
一.简述 Criteria是一种比hql更面向对象的查询方式.Criteria 可使用 Criterion 和 Projection 设置查询条件.可以设置 FetchMode(联合查询抓取的模式 ) ...
- [NHibernate]条件查询Criteria Query
目录 写在前面 文档与系列文章 条件查询 一个例子 总结 写在前面 上篇文章介绍了HQL查询,我个人觉得使用ORM框架就是为了让少些sql,提高开发效率,而再使用HQL就好像还是使用sql,就觉得有点 ...
- 第九章 Criteria查询及注解
第九章 Criteria查询及注解9.1 使用Criteria查询数据 9.1.1 条件查询 Criteria查询步骤: 1)使用session接口的cr ...
- JPA criteria 查询:类型安全与面向对象
参考:https://my.oschina.net/zhaoqian/blog/133500 一.JPA元模型概念,及使用 在JPA中,标准查询是以元模型的概念为基础的.元模型是为具体持久化单元的受管 ...
- SQL语句汇总(三)——聚合函数、分组、子查询及组合查询
聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均值 –MAX:计算列的最大值 –MIN:计 ...
- Python-select 关键字 多表查询 子查询
sql 最核心的查询语句!!!! 增删改 单表查询 select语句的完整写法 关键字的书写顺序 执行顺序 多表查询 笛卡尔积 内连接 左外连接 右外连接 全外连接 通过合并左外连接和右外连接 子查询 ...
随机推荐
- Prometheus 标签使用示例整合
Prometheus 监控实例 一.Prometheus 根据标签聚合总CPU使用率 1.主机添加标签(可在多个主机内添加相同标签实现聚合):vim prometheus.conf static_co ...
- ArrayDeque详解
美人如斯! ArrayDeque是java中对双端队列的线性实现 一.特性 无容量大小限制,容量按需增长: 非线程安全队列,无同步策略,不支持多线程安全访问: 当用作栈时,性能优于Stack,当用于队 ...
- 更改collation批处理
DECLARE @zcreate_index_sql NVARCHAR(max); SET @zcreate_index_sql = N''; SELECT @zcreate_index_sql = ...
- eclipse从svn检出maven项目
使用Eclipse从svn检出项目. 打开Eclipse,在project explorer空白区域右键鼠标移至import选择import. 2 之后选择svn-->从svn检出项目,然后输入 ...
- Linux学习笔记之Linux系统的swap分区
0x00 什么是swap分区 Swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空 ...
- 在Unity 5中优化SkinnedMeshRenderer
过早优化是万恶之源”——Donald Knuth 不少开发者在前期开发过程中对算法等类似的开销都甚少关心,而是更倾向于尽可能简单的解决某个问题,后面必要时再进行优化.这能极大加速开发进度 ...
- winform+cefSharp实现窗体加载浏览器
1:新建winform项目 2:安装cefSharp 3:配置管理器更改为X86 4:添加引用 using CefSharp; using CefSharp.WinForms; 5:项目启动,打开网页 ...
- JavaScript 之 RegExp 对象
RegExp 正则表达式对象 一.正则表达式 正则表达式:定义字符串的组成规则. 1.单个字符:[ ] 如:[a].[ab].[a-zA-Z0-9] 特殊符号代表特殊含义的单个字符: \d:单个数字字 ...
- git设置本地账户
问题描述: git很方便,git本地如果记住账户信息 问题解决: vscode Git 全局设置: git config --global user.name "mvpbang" ...
- Vue-cli3 中 通过在index.html添加的script js文件 如何在组件内使用不会 xxx is not defined错误
以jQuery 为例 第一种方法 更改webpack配置信息 1.在vue.config.js中(如果没有 请在根目录新建)配置如下信息 // const webpack = require('web ...