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-基本查询相关推荐

  1. Hibernate的高级查询1之qbe和qbc

    Hibernate的种查询方式 qbe.qbc和hql 先来解释一下什么是Criteria Criteria面向对象化查询接口,将数据查询条件封装为一个对象,可以把它看成传统SQL的对象化表示 这个是 ...

  2. Hibernate QBC查询

    Hibernate day_02 持久化类以及编写规则. 持久化类就是我们说的实体类(符合 JavaBean 的规则). 以后分包:entity(实体),pojo(简单的 Java 对象),domia ...

  3. Hibernate(九)HQL查询

    一.Hibernate提供的查询方式 OID查询方式:主键查询.通过get()或者load()方法加载指定OID的对象查询结果为一个 HQL查询方式:通过Query接口使用HQL语言进行查询 QBC查 ...

  4. Hibernate之Criteria查询及注解

    1. 前言 之前从来没有接触过Hibernate,跳槽之后的公司使用的是Hibernate的Criteria查询.简单整理一下. 2.什么是Criteria查询QBC(Query By Criteri ...

  5. Hibernate:SQL查询 addScalar()或addEntity()

      Hibernate除了支持HQL查询外,还支持原生SQL查询. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.该 ...

  6. hibernate mysql 模糊查询_服务器-hibernate操作mysql,模糊查询时中文查不到,数字和英文可以查到...

    用hibernate做模糊查询,页面传递参数也处理了乱码 @Action(value="searchNameByad") public String searchNameByad( ...

  7. Hibernate 笔记 HQL查询

    http://www.cnblogs.com/zilong882008/archive/2011/11/05/2237123.html Hibernate 笔记 HQL查询(一)单属性,多属性查询 H ...

  8. (2)hibernate HQL命名查询和Query接口的分页查询

    一  hql命名查询 hibernate中对动态查询参数绑定提供了丰富的支持,那么什么是查询参数动态绑定呢?其实如果我们熟悉传统JDBC编程的话,我们就不难理解查询参数动态绑定,如下代码传统JDBC的 ...

  9. Hibernate Query数据查询

    2019独角兽企业重金招聘Python工程师标准>>> 主要由三种查询:HQL查询.Criteria条件查询.SQL查询. 以下分别讲解 1. HQL查询 HQL(Hibernate ...

  10. Hibernate Native SQL查询示例

    Hibernate Native SQL查询示例 欢迎使用Hibernate Native SQL Query示例教程.我们在前面的文章中研究了Hibernate查询语言和Hibernate Crit ...

最新文章

  1. 程序怎么才能把自己的删除掉?
  2. mysql分页的高效算法_mysql_海量数据库的查询优化及分页算法方案
  3. Android开发教程之--sql语句一、创建/删除表Stringsql=Createtable
  4. 取本地数据_深入理解Kafka服务端之Follower副本如何同步Leader副本的数据
  5. testNG之组测试
  6. 本周四直播:Oracle 19c 升级实战分享
  7. 网络工程师考试模拟器
  8. 华为p10 鸿蒙,全面上线!华为鸿蒙新消息传来,这是要彻底替换安卓
  9. laravel配置加解密
  10. 内联元素与内联块状元素
  11. 一文详解光场在三维人脸建模中的应用
  12. Oracle 字符串批量替换
  13. MATLAB基础知识零基础到入门(第一期 基础内容)
  14. 皮克公式:点阵中多边形的面积公式
  15. 常见网站挂马方式 网站挂马可利用漏洞 网站加密挂马
  16. 人脸表情识别和情绪分类 | Python+TensorFlow(框架)+Keras+PyQt5
  17. 鸿蒙玺绶能升级么,属性激增 《诛仙2》强力装备大集合(三)
  18. (4.2.40)阿里开源路由框架ARouter的源码分析
  19. 3D角色模型的雕刻技巧:电影般的艺术工作流程,靠的是时间的叠加
  20. <caption>表格标题标签

热门文章

  1. js导入,导出exel表格
  2. 使用事件委托降低重复的事件绑定,从而降低dom操作的对性能的消耗[兼容IE版]
  3. Mac环境下安装Sass
  4. Python序列化的使用(有少量修改)
  5. 系统ghost后变成一个盘了别的分区的文件怎么找回
  6. 快来围观一下JavaScript的Proxy
  7. 优雅地在Mac+Valet环境下本地部署phphub
  8. [翻译] 聚集索引表 VS 堆表
  9. 高手进阶:/etc/profile环境变量配置解析
  10. ASP.Net上传文件带进度条、显示剩余时间!