Hibernate- QBC-基本查询
01.环境搭建
02.基本查询
1.方法说明
|
方法 |
说明 |
|
Restrictions.eq |
= |
|
Restrictions.allEq |
利用Map来进行多个等于的限制 |
|
Restrictions.gt |
> |
|
Restrictions.ge |
>= |
|
Restrictions.lt |
< |
|
Restrictions.le |
<= |
|
Restrictions.between |
BETWEEN |
|
Restrictions.like |
LIKE |
|
Restrictions.in |
in |
|
Restrictions.and |
and |
|
Restrictions.or |
or |
|
Restrictions.sqlRestriction |
用SQL限定查询 |
2,QBC常用限定方法
Restrictions.eq --> equal,等于.
Restrictions.allEq --> 参数为Map对象,使用key/value进行多个等于的比对,相当于多个Restrictions.eq的效果
Restrictions.gt --> great-than > 大于
Restrictions.ge --> great-equal >= 大于等于
Restrictions.lt --> less-than, < 小于
Restrictions.le --> less-equal <= 小于等于
Restrictions.between --> 对应SQL的between子句
Restrictions.like --> 对应SQL的LIKE子句
Restrictions.in --> 对应SQL的in子句
Restrictions.and --> and 关系
Restrictions.or --> or 关系
Restrictions.isNull --> 判断属性是否为空,为空则返回true
Restrictions.isNotNull --> 与isNull相反
Restrictions.sqlRestriction --> SQL限定的查询
Order.asc --> 根据传入的字段进行升序排序
Order.desc --> 根据传入的字段进行降序排序
MatchMode.EXACT --> 字符串精确匹配.相当于"like 'value'"
MatchMode.ANYWHERE --> 字符串在中间匹配.相当于"like '%value%'"
MatchMode.START --> 字符串在最前面的位置.相当于"like 'value%'"
MatchMode.END --> 字符串在最后面的位置.相当于"like '%value'"
01.基本操作
package com.gordon.test; import java.util.List; import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.junit.Test; import com.gordon.domain.Book;
import com.gordon.utils.HibernateUtil; /**
* QBC查询
* @author Administrator
*
*/
public class TestQBCDemo1 {
/**
* 基本查询
*/
@Test
public void run1() {
Session session = HibernateUtil.getCurrentSession();
Transaction transaction = session.beginTransaction(); // 穿件criteria查询接口
Criteria query = session.createCriteria(Book.class); query.addOrder(Order.asc("price"));
query.add(Restrictions.le("price", 40.00)); List<Book> list = query.list();
for (Book book : list) {
System.out.println(book.getName());
} transaction.commit();
}
}
02.分组查询
/**
* 分组查询
Hibernate:
select
this_.publisher_id as y0_,
count(*) as y1_,
sum(this_.price) as y2_
from
t_book this_
group by
this_.publisher_id
Hibernate:
select
publisher0_.id as id1_1_0_,
publisher0_.name as name2_1_0_
from
t_publisher publisher0_
where
publisher0_.id=?
出版社:电子工业出版社, 图书数量:3, 总价:155.0
Hibernate:
select
publisher0_.id as id1_1_0_,
publisher0_.name as name2_1_0_
from
t_publisher publisher0_
where
publisher0_.id=?
出版社:北京大学出版社, 图书数量:2, 总价:67.84
Hibernate:
select
publisher0_.id as id1_1_0_,
publisher0_.name as name2_1_0_
from
t_publisher publisher0_
where
publisher0_.id=?
出版社:人民邮电出版社, 图书数量:2, 总价:107.2
*/
@Test
public void run2() {
Session session = HibernateUtil.getCurrentSession();
Transaction transaction = session.beginTransaction(); // 穿件criteria查询接口
Criteria query = session.createCriteria(Book.class); ProjectionList pList = Projections.projectionList();
pList.add(Projections.groupProperty("publisher"));
pList.add(Projections.rowCount());
pList.add(Projections.sum("price")); query.setProjection(pList); Publisher publisher = null;
Long count = null;
Double sum = null;
List<Object[]> list = query.list();
for (Object[] obj : list) {
publisher = (Publisher) obj[0];
count = (Long) obj[1];
sum = (Double) obj[2]; System.out.println("出版社:" + publisher.getName() + ", 图书数量:" + count + ", 总价:" + sum);
} transaction.commit();
}
03.聚合函数
/**
* 聚合函数
Hibernate:
select
sum(this_.price) as y0_,
min(this_.price) as y1_,
max(this_.price) as y2_,
avg(this_.price) as y3_
from
t_book this_
[330.04, 31.0, 70.0, 47.14857142857143]
*/
@Test
public void run3() {
Session session = HibernateUtil.getCurrentSession();
Transaction transaction = session.beginTransaction(); Criteria criteria = session.createCriteria(Book.class); ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.sum("price"));
projectionList.add(Projections.min("price"));
projectionList.add(Projections.max("price"));
projectionList.add(Projections.avg("price")); criteria.setProjection(projectionList); List<Object[]> list = criteria.list();
for (Object[] objects : list) {
System.out.println(Arrays.toString(objects));
} transaction.commit();
}
Hibernate- QBC-基本查询的更多相关文章
- Hibernate QBC 条件查询(Criteria Queries) and Demos
目录 创建一个Criteria 实例 限制结果集内容 结果集排序 关联 动态关联抓取 查询示例 投影Projections聚合aggregation和分组grouping 离线detached查询和子 ...
- Hibernate之HQL查询
一.Hibernate 提供了以下几种检索对象的方式: 导航对象图检索方式: 根据已经加载的对象导航到其他对象 OID 检索方式: 按照对象的 OID 来检索对象 HQL 检索方式:使用面向对象的 H ...
- Hibernate(九)HQL查询
一.Hibernate提供的查询方式 OID查询方式:主键查询.通过get()或者load()方法加载指定OID的对象查询结果为一个 HQL查询方式:通过Query接口使用HQL语言进行查询 QBC查 ...
- 框架之 hibernate之各种查询
1. Hibernate的查询方式 2. Hibernate的查询策略 案例:使用Hibernate完成查询所有联系人功能 需求分析 1. 完成所有的联系人的查询 技术分析之Hibernate框架的查 ...
- Hibernate框架的查询方式
技术分析之Hibernate框架的查询方式 1. 唯一标识OID的检索方式 * session.get(对象.class,OID) 2. 对象的导航的方式 ...
- (补充)10.Hibernate框架的查询方式
技术分析之Hibernate框架的查询方式 1. 唯一标识OID的检索方式 * session.get(对象.class,OID) 2. 对象的导航的方式 3. HQL的检索方式 * Hibernat ...
- Hibernate QBC 简单收集
Hibernate QBC 介绍: QBC(Query By Criteria)通过 API 来检索对象 主要由 Criteria 接口.Criterion 接口和 Exception 类组成,支持在 ...
- hibernate框架之-查询结果集返回类型
Hibernate支持HQL和SQL的查询,返回结果支持POJO类型或字段/数组的形式. 开发中用Hibernate进行数据库查询,用的是SQL.原来需要查询一个表的几乎所有字段,所以我使用了addE ...
- Hibernate原生SQL查询
最近在做一个较为复杂的查询,hibernate基本的查询不能满足,只好使用其提供的原生sql查询.参考网上的一些资料,做一些总结. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行 ...
- hibernate的hql查询
1.概念介绍 1.Query是Hibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL查询语句. 2.HQL是Hibernate Query Langua ...
随机推荐
- SSL原理
http://blog.csdn.net/terryzero/article/details/5921791SSL的原理以前一直很模糊,看了下面这篇文章后清楚了许多,为了方便以后的回顾,所以转载下 R ...
- Java虚拟机学习 - 查看JVM参数及值的命令行工具(6)
查看JVM各个参数值方式 1. HotSpot vm中的各个globals.hpp文件 查看jvm初始的默认值及参数 globals.hpp globals_extension.hpp c1_glo ...
- RabbitMQ消息队列(五):Routing 消息路由 2[原]
上一篇文章使用的是Direct的Exchange,但是没有指定Queue的名字,这样只能是先运行Consumer之后,Producer在运行发消息Consumer才能收到,否则先运行Producer发 ...
- 常用JS技巧[转]
作者:72妃 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); even ...
- 【js】sort()
//为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串, //以确定如何排序.即使数组中的每一项都是数值,sort()方法比较的也是字符串, var v ...
- CentOS7 安装配置DNS服务器
一.安装 yum install bind 二.配置 1. /etc/named.conf // // named.conf // // Provided by Red Hat bind packag ...
- [转] 禁止ultraedit自动检查更新的方法
菜单栏: 高级->配置->应用程序布局->其他 取消勾选“自动检查更新” (原文地址:http://blog.csdn.net/redeyerabbit/article/deta ...
- echarts geo地图坐标转换为页面Offset坐标
https://github.com/apache/incubator-echarts/issues/2540 代码示例: // 获取系列 ) // 获取地理坐标系实例 var coordSys = ...
- CentOS7添加开机启动服务/脚本(延用CentOS6方法)
一.添加开机自启服务 在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务为 ...
- 【转】z-index层级在老版本的IE中无效
在CSS中,只能通过代码改变层级,这个属性就是z-index,要让z-index起作用有个小小前提,就是元素的position属性要是relative,absolute或是fixed. 1.第一种情况 ...