lQBC(Query By Criteria)是一种Hibernate中使用面向对象的格式进行查询的计数

lQBC查询方式步骤

•获取Session对象

•初始化Criteria对象(使用Session对象创建)

•由Session对象创建

•传入要查询的数据模型类

•添加各种查询条件

•执行查询返回结果(返回单条数据或集合数据)

lQBC查询格式非常简单,更符合编程人员的习惯

•Criteria对象用于由Session对象创建,传入要查询的PO类

•Criteria c = s.createCriteria(TeacherModel.class);

lQBC的查询结果与HQL相同分为两种

•查询结果为多条数据使用list方法获取集合

•查询结果为单一数据使用uniqueResult方法获取对象

分页查询

lQBC查询中的分页格式与HQL中使用的分页格式完全相同,通过方法设定参数完成

•setFirstResult(int);

•setMaxResults(int);

QBC——查询结果排序

lQBC查询结果排序相对于HQL简化很多

•为Criteria对象创建的查询结果排序只需要为其添加排序规则

•c.addOrder(排序规则);

•排序规则是Order对象的常量,传入对象中排序的属性

•c.addOrder(Order.desc("age"));

•Order.desc(String)是排序规则,age是排序字段

•排序规则可以设定多个,由添加顺序决定主副排序顺序

QBC——条件查询(重点)

lQBC条件查询是QBC查询中最强大的功能,由于格式由SQL语句转化为对象化操作,因此需要掌握转化后的对应关系与书写规则

lQBC将所有的查询条件封装成面向对象的操作,从格式上初期接受起来比较困难

QBC——条件查询规则

QBC——条件查询规则

lHQL与QBC条件运算符对应关系

QBC——条件查询示例

l查询年龄小于30岁的学生

•c.add(Restrictions.lt("age", 30));

l查询年龄不小于30岁的学生

•c.add(Restrictions.not(Restrictions.lt("age", 30)));

•c.add(Restrictions.ge("age", 30));

l查询年龄小于35岁,职业技能中包含“剑”的学生

•c.add(Restrictions.and(Restrictions.lt("age", 45), Restrictions.like("skill", "%剑%")));

QBC——多表关联查询

l查询教师“李若亮的所有学生”

•无法查找到teacher.teacherName属性

l使用别名引用teacher.teacherName对象图导航

•使用别名t表示StudentModel类中的被关联的属性teacher,然后进行对象图导航格式进行条件设置

别名的定义是为了关联到对应的对象

HQL与QBC比较

l当业务十分简单时,推荐使用HQL查询

l当进行复杂条件查询时,推荐使用QBC查询

l如果考虑到业务分层时的耦合度降低,抛弃离线查询DetachedCriteria,改用Model传参,扔可使用Criteria进行查询

l基于性能考虑,在必须使用Hibernate时,HQL从各个方面,包括复杂条件查询,整体性能优于QBC查询,可以考虑抛弃Criteria查询模式

hibernate框架学习之数据查询(QBC)的更多相关文章

  1. hibernate框架学习之数据查询(QBC)helloworld

    package cn.itcast.h3.query.hql; import java.util.List; import org.hibernate.Criteria; import org.hib ...

  2. hibernate框架学习之数据查询(HQL)

    lHibernate共提供5种查询方式 •OID数据查询方式 •HQL数据查询方式 •QBC数据查询方式 •本地SQL查询方式 •OGN数据查询方式 OID数据查询方式 l前提:已经获取到了对象的OI ...

  3. hibernate框架学习之数据查询(HQL)helloworld

    package cn.itcast.h3.hql; import java.util.List; import org.hibernate.Query; import org.hibernate.Se ...

  4. hibernate框架学习之数据查询(本地SQL)

    本地SQL查询方式 lHibernate框架支持使用原生态SQL语句进行操作数据库 l查询对象SQLQuery由Session获取 •SQLQuery sq = s.createSQLQuery(&q ...

  5. hibernate框架学习之数据抓取(加载)策略

    Hibernate获取数据方式 lHibernate提供了多种方式获取数据 •load方法获取数据 •get方法获取数据 •Query/ Criteria对象获取数据 lHibernate获取的数据分 ...

  6. hibernate框架学习之数据抓取(加载)策略helloworld

    package cn.itcast.h3.query.hql; import java.util.List; import org.hibernate.Query; import org.hibern ...

  7. Hibernate框架学习(五)——批量查询(概述)

    一.HQL查询(Hibernate Query Language)多表查询,但不复杂时使用 Hibernate独家查询语言,属于面向对象的查询语言 1.基本查询 2.条件查询 注意:HQL语句中不可能 ...

  8. hibernate框架学习第六天:QBC、分页查询、投影、数据加载策略、二级缓存

    QBC查询 1.简单查询 Criteria c = s.createCriteria(TeacherModel.class); 2.获取查询结果 多条:list 单挑:uniqueResult 3.分 ...

  9. hibernate框架学习第五天:数据查询、投影等

    复习day1环境搭建CRUD操作DB6个核心的APIday2TO PO DO 及其状态切换OID 自然主键 代理主键(uuid)一级缓存 Session绑定 load/get关系1对1 1对多(重点) ...

随机推荐

  1. springcloud配置需要主要的地方

    Eureka服务端 注册中心 <!-- Eureka服务端 --> <dependency> <groupId>org.springframework.cloud& ...

  2. vue报错:/node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?

    vue项目中报这样的错误:./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js? 大部分是因为文件的路径有 ...

  3. jQuery中获取a标签的值

    如题,一组相同action的a标签,不同的是a标签的内容为搜索内容.点击页面显示不同的数据 刚开始试过在 a标签中添加 value值 和id 的值,结果在jQuery中获取值均失败! 后来发现,根本不 ...

  4. Tips and Tricks for Debugging in chrome

    Tips and Tricks for Debugging in chrome Pretty print On sources panel ,clicking on the {} on the bot ...

  5. python 精华梳理(已理解并手写)--全是干货--已结

    基础部分 map,reduce,filter,sort,推导式,匿名函数lambda , 协程,异步io,上下文管理 自定义字符串转数字方法一不使用reduce import re def str2i ...

  6. ElasticSearch - Shard数调优(ElasticSearch性能)

    序言 资料 https://blog.csdn.net/waneyongfu/article/details/78215972

  7. DevExpress 之 GridControl 自定义列

    Ø  前言 DevExpress 控件大家应该都有所了解,使用这个框架实现B/S或C/S的,都是非常出色的.本文主要讨论下 GridControl 中如何[自定义列]或[计算列],可使用以下两种方法实 ...

  8. Discuz 论坛 (LAMP环境)

    Discuz 论坛系统运行依赖 LAMP/LNMP的基础环境. 1.使用 yum 安装 MySQL: yum install mysql-server -y service mysqld restar ...

  9. javascript文档

    DOM Document <html> Document 对象 每个载入浏览器的 HTML 文档都会成为 Document 对象. Document 对象使我们可以从脚本中对 HTML 页 ...

  10. Python 获取文件中最长行的长度和最长行

    1, 使用文件 #vim /etc/motd "1 hello world" 2 ...... yes 3 no you are a shadiao 4 hahh maye you ...