hibernate框架学习之数据查询(QBC)
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)的更多相关文章
- hibernate框架学习之数据查询(QBC)helloworld
package cn.itcast.h3.query.hql; import java.util.List; import org.hibernate.Criteria; import org.hib ...
- hibernate框架学习之数据查询(HQL)
lHibernate共提供5种查询方式 •OID数据查询方式 •HQL数据查询方式 •QBC数据查询方式 •本地SQL查询方式 •OGN数据查询方式 OID数据查询方式 l前提:已经获取到了对象的OI ...
- hibernate框架学习之数据查询(HQL)helloworld
package cn.itcast.h3.hql; import java.util.List; import org.hibernate.Query; import org.hibernate.Se ...
- hibernate框架学习之数据查询(本地SQL)
本地SQL查询方式 lHibernate框架支持使用原生态SQL语句进行操作数据库 l查询对象SQLQuery由Session获取 •SQLQuery sq = s.createSQLQuery(&q ...
- hibernate框架学习之数据抓取(加载)策略
Hibernate获取数据方式 lHibernate提供了多种方式获取数据 •load方法获取数据 •get方法获取数据 •Query/ Criteria对象获取数据 lHibernate获取的数据分 ...
- hibernate框架学习之数据抓取(加载)策略helloworld
package cn.itcast.h3.query.hql; import java.util.List; import org.hibernate.Query; import org.hibern ...
- Hibernate框架学习(五)——批量查询(概述)
一.HQL查询(Hibernate Query Language)多表查询,但不复杂时使用 Hibernate独家查询语言,属于面向对象的查询语言 1.基本查询 2.条件查询 注意:HQL语句中不可能 ...
- hibernate框架学习第六天:QBC、分页查询、投影、数据加载策略、二级缓存
QBC查询 1.简单查询 Criteria c = s.createCriteria(TeacherModel.class); 2.获取查询结果 多条:list 单挑:uniqueResult 3.分 ...
- hibernate框架学习第五天:数据查询、投影等
复习day1环境搭建CRUD操作DB6个核心的APIday2TO PO DO 及其状态切换OID 自然主键 代理主键(uuid)一级缓存 Session绑定 load/get关系1对1 1对多(重点) ...
随机推荐
- 设计模式---行为变化模式之访问器模式(Visitor)
一:概念 访问者模式,是行为模式之一,它分离对象的数据和行为,使用Visitor模式,可以不修改已有类的情况下,增加新的操作角色和职责. 二:动机 在软件构建的过程中,由于需求的改变,某些类层次结构中 ...
- 5.Hystrix-服务降级
所谓降级,就是当某个服务出现异常之后,服务器将不再被调用,此时服务端可以自己准备一个本地的fallback回调,返回一个缺省值. 这样做,虽然服务水平下降,但好歹可用,比直接挂掉要强,当然这也要看适合 ...
- MassTransit 学习
http://blog.csdn.net/starfd/article/details/50973124
- 从零开始搭建高性能高可用Tomcat服务器
目标: Tomcat+Nginx+Memcached Ubuntu 16.04 64位测试通过 动静分类.负载均衡.集群.Javolution序列化.高性能.高可用 配置环境(目前均为最新稳定版): ...
- [Android] Android Butterknife 8.8.1 在 Activity 和 Fragment 、 Adapter 中的使用
ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤.是大神JakeW ...
- 修改xshell的默认字间距和行间距
可能是不小心修改了xshell的某个配置,导致打开的会话中显示字间距和行间距都非常大,严重影响工作.参照官方手册也不能修改正常,详见:http://www.xshellcn.com/wenti/xiu ...
- Android SVN上传项目
方式一: 1 工具栏 VCS ——import into Version Control - Share Project (SubVersion)(注意不要用import into SubVersio ...
- Sqlserver自动优化
(1)select a.* from tb1 a left join tb2 b on a.id=b.id where a.name='1' (2)select * from (select a. ...
- Uncaught TypeError: $(…).orgcharts is not a function
调整js顺序没有解决,最后增加NoConflict解决,注意红色部分 function initorgcharts() { var $jq = jQuery.noConflict(true); org ...
- VS2017 15.6之后支持直接反编译了
在 15.6 预览版 2 中,增加了导航到反编译源功能. 启用后,在任何引用的类型或成员上调用转到定义或查看定义时,将显示其通过 ILSpy 反编译使用重新构造方法主体的定义. 要打开此功能,请转到“ ...