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 {/*** 基本查询*/@Testpublic 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: selectthis_.publisher_id as y0_,count(*) as y1_,sum(this_.price) as y2_ fromt_book this_ group bythis_.publisher_idHibernate: selectpublisher0_.id as id1_1_0_,publisher0_.name as name2_1_0_ fromt_publisher publisher0_ wherepublisher0_.id=?出版社:电子工业出版社, 图书数量:3, 总价:155.0Hibernate: selectpublisher0_.id as id1_1_0_,publisher0_.name as name2_1_0_ fromt_publisher publisher0_ wherepublisher0_.id=?出版社:北京大学出版社, 图书数量:2, 总价:67.84Hibernate: selectpublisher0_.id as id1_1_0_,publisher0_.name as name2_1_0_ fromt_publisher publisher0_ wherepublisher0_.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: selectsum(this_.price) as y0_,min(this_.price) as y1_,max(this_.price) as y2_,avg(this_.price) as y3_ fromt_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的高级查询1之qbe和qbc
Hibernate的种查询方式 qbe.qbc和hql 先来解释一下什么是Criteria Criteria面向对象化查询接口,将数据查询条件封装为一个对象,可以把它看成传统SQL的对象化表示 这个是 ...
- Hibernate QBC查询
Hibernate day_02 持久化类以及编写规则. 持久化类就是我们说的实体类(符合 JavaBean 的规则). 以后分包:entity(实体),pojo(简单的 Java 对象),domia ...
- Hibernate(九)HQL查询
一.Hibernate提供的查询方式 OID查询方式:主键查询.通过get()或者load()方法加载指定OID的对象查询结果为一个 HQL查询方式:通过Query接口使用HQL语言进行查询 QBC查 ...
- Hibernate之Criteria查询及注解
1. 前言 之前从来没有接触过Hibernate,跳槽之后的公司使用的是Hibernate的Criteria查询.简单整理一下. 2.什么是Criteria查询QBC(Query By Criteri ...
- Hibernate:SQL查询 addScalar()或addEntity()
Hibernate除了支持HQL查询外,还支持原生SQL查询. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.该 ...
- hibernate mysql 模糊查询_服务器-hibernate操作mysql,模糊查询时中文查不到,数字和英文可以查到...
用hibernate做模糊查询,页面传递参数也处理了乱码 @Action(value="searchNameByad") public String searchNameByad( ...
- Hibernate 笔记 HQL查询
http://www.cnblogs.com/zilong882008/archive/2011/11/05/2237123.html Hibernate 笔记 HQL查询(一)单属性,多属性查询 H ...
- (2)hibernate HQL命名查询和Query接口的分页查询
一 hql命名查询 hibernate中对动态查询参数绑定提供了丰富的支持,那么什么是查询参数动态绑定呢?其实如果我们熟悉传统JDBC编程的话,我们就不难理解查询参数动态绑定,如下代码传统JDBC的 ...
- Hibernate Query数据查询
2019独角兽企业重金招聘Python工程师标准>>> 主要由三种查询:HQL查询.Criteria条件查询.SQL查询. 以下分别讲解 1. HQL查询 HQL(Hibernate ...
- Hibernate Native SQL查询示例
Hibernate Native SQL查询示例 欢迎使用Hibernate Native SQL Query示例教程.我们在前面的文章中研究了Hibernate查询语言和Hibernate Crit ...
最新文章
- 程序怎么才能把自己的删除掉?
- mysql分页的高效算法_mysql_海量数据库的查询优化及分页算法方案
- Android开发教程之--sql语句一、创建/删除表Stringsql=Createtable
- 取本地数据_深入理解Kafka服务端之Follower副本如何同步Leader副本的数据
- testNG之组测试
- 本周四直播:Oracle 19c 升级实战分享
- 网络工程师考试模拟器
- 华为p10 鸿蒙,全面上线!华为鸿蒙新消息传来,这是要彻底替换安卓
- laravel配置加解密
- 内联元素与内联块状元素
- 一文详解光场在三维人脸建模中的应用
- Oracle 字符串批量替换
- MATLAB基础知识零基础到入门(第一期 基础内容)
- 皮克公式:点阵中多边形的面积公式
- 常见网站挂马方式 网站挂马可利用漏洞 网站加密挂马
- 人脸表情识别和情绪分类 | Python+TensorFlow(框架)+Keras+PyQt5
- 鸿蒙玺绶能升级么,属性激增 《诛仙2》强力装备大集合(三)
- (4.2.40)阿里开源路由框架ARouter的源码分析
- 3D角色模型的雕刻技巧:电影般的艺术工作流程,靠的是时间的叠加
- <caption>表格标题标签