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. 有关mysql的innodb_flush_log_at_trx_commit参数

    一.参数解释 0:log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下在事务提交的时候,不会主动触发写入磁盘的操作. 1:每次事务 ...

  2. hdu 2815 Mod Tree (exBSGS)

    http://acm.hdu.edu.cn/showproblem.php?pid=2815 //解 K^D ≡ N mod P #include<map> #include<cma ...

  3. openstack服务启动之nova-compute

    在openstack中,消息的传递一共有两种方式,分别是:服务之间的传递调用Restful api,服务中模块之间的传递使用消息队列.每一个模块在启动是都会启动消息队列,等待队列中的有消息到来.所以模 ...

  4. Ganglia 入门介绍及解决fsockopen error: Connection refused问题

    一,问题描述 Ganglia的各个组件安装情况(不是我装的,只知道这些信息): 集群一共有4台机器,分别是192.168.121.34-37.Gmetad.Gweb和httpd 安装在 192.168 ...

  5. GreenDao 直接执行SQL的方法

    try { DaoSession session=MyApplication.getInstances().getDaoSession(); long fromId=-1; String strSql ...

  6. VisualStuido C# Files 的值“<<<<<<< .mine”无效。路径中具有非法字符。

    直接在项目中搜是搜不到<<<<<<.mine,可以直接删除obj文件夹.

  7. 使用 JS 实现图片左右跑马灯

    Ø  前言 之前写了一篇使用 JS 实现文字上下跑马灯,现在乘热打铁在把图片左右跑马灯一起贴出来,不多说直接看代码. 1.   首先定义 css 样式 <style type="tex ...

  8. Mac pro 装双系统 参考

    15岁觉得游泳难,放弃游泳,到18岁遇到一个你喜欢的人约你去游泳,你只好说“我不会耶”.18岁觉得英文难,放弃英文,28岁出现一个很棒但要会英文的工作,你只好说“我不会耶”.人生前期越嫌麻烦,越懒得学 ...

  9. DUMP1 企业级电商项目

    系统:centos6 配置mirror阿里云 https://opsx.alibaba.com/mirror 远程管理首选:ssh 账户密码登录(ssh user@host) 或者 本地私钥连接服务器 ...

  10. tensorflow 学习

    tensorflow: tensor 沿着graph 传递闭包完成flow的过程. 简单运算: import tensorflow as tf # Build a graph. a = tf.cons ...