hibernate框架学习之数据查询(qbc)

架构师小跟班      2022-04-06     714

关键词:

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

lQBC查询方式步骤

•获取Session对象

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

•由Session对象创建

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

•添加各种查询条件

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


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

image

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

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


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

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

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


分页查询

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

•setFirstResult(int);

•setMaxResults(int);


QBC——查询结果排序

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

image

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

•c.addOrder(排序规则);

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

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

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

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


QBC——条件查询(重点)

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

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


QBC——条件查询规则

image


QBC——条件查询规则

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

image

image


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查询教师“李若亮的所有学生”

image

•无法查找到teacher.teacherName属性

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

image

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

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


HQL与QBC比较

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

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

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

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

hibernate框架学习之数据查询(hql)

lHibernate共提供5种查询方式?OID数据查询方式?HQL数据查询方式?QBC数据查询方式?本地SQL查询方式?OGN数据查询方式OID数据查询方式l前提:已经获取到了对象的OIDl查询:基于OID,使用get/load方法查询对应的数据l作用:使用OID获取对应... 查看详情

hibernate框架学习之增删改查helloworld

插入数据删除数据修改数据查询单条数据查询多条数据HelloWorldApp.javapackagecn.itcast.h3.helloworld;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.Transaction;importorg.hibernate.cfg.Configur 查看详情

hibernate框架学习之使用sqlquery查询数据

SQLQuery对象的获取  Hibernate支持使用原生SQL语句进行查询,通过session对象获得SQLQuery对象进行,需要传入SQL语句  SQLQuerycreateSQLQuery(StringsqlStr)  SQLQueryquery=session.createSQLQuery(“select*fromtbl_user");sqlStr是满足SQL语法规则的字符... 查看详情

hibernate框架学习之数据查询(hql)helloworld

packagecn.itcast.h3.hql;importjava.util.List;importorg.hibernate.Query;importorg.hibernate.Session;importcn.itcast.h3.hql.vo.StudentModel;importcn.itcast.h3.hql.vo.TeacherModel;importcn.itcast.h3.util 查看详情

hibernate框架学习之多表查询helloworld

packagecn.itcast.h3.hql;importjava.util.List;importorg.hibernate.Query;importorg.hibernate.Session;importcn.itcast.h3.hql.vo.StudentModel;importcn.itcast.h3.hql.vo.TeacherModel;importcn.itcast.h3.util 查看详情

hibernate框架学习之数据模型-pojo

Hibernate数据模型用于封装数据,开发时候需要遵从如下规范:1)提供公共无参的构造方法(可使用自动生成的)如果使用投影技术,一定要显式声明公共无参的构造方法2)提供一个标识属性,作为对象的主键,映射数据库表主键... 查看详情

hibernate框架学习之持久化对象oid

...相同2)Java语言中使用对象的内存地址区分对象是否相同3)Hibernate中使用OID区分对象是否相同Hibernate认为每一个不同的对象应该具有一个唯一的标识,称这个标识为OID;为了使数据模型与数据库表一样使用主键来进行数据的区分,... 查看详情

hibernate框架学习之核心api

...SessionTransactionQueryCriteriaConfigurationConfiguration对象用于封装Hibernate的配置信息,在Hibernate框架启动后,需要装载对应的配置文件。Hibernate的配置文件有两种格式hibernate.properties文件(早期格式)hibernate.cfg.xml文件( 查看详情

java学习之hibernate框架使用

Java学习之Hibernate框架使用0x00前言以我看来Hibernate的使用频率其实还是比较可观的,但都说Hibernate比较笨重,这里来学习一波,做个简单记录。0x01使用流程流程1、导⼊相关依赖2、创建Hibernate配置⽂件3、创建实体类4、创建实体... 查看详情

hibernate框架学习之核心配置文件

hibernate.cfg.xml<?xmlversion=‘1.0‘encoding=‘utf-8‘?><!DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration 查看详情

hibernate框架学习之主键生成策略generator

1)手工控制assigned(不限制类型)2)数据库自动生成uuid(字符串类型)increment(整型数值类型)identity(整型数值类型)sequence(整型数值类型)native(整型数值类型)assigned策略是由程序员手工控制输入数据模型OID的一种id生成策略assigned策略不... 查看详情

hibernate框架学习之对象状态

Hibernate对象共有三种状态瞬时状态:瞬时对象持久化状态:持久化对象托管状态:托管对象瞬时对象(TransientObject),简称TO瞬时对象指的是应用程序创建出来的对象,并且未受到Hibernate控制,一旦Hibernate控制了该对象,具有了OID... 查看详情

hibernate框架学习之对象状态

lHibernate对象共有三种状态?瞬时状态:瞬时对象?持久化状态:持久化对象?托管状态:托管对象l瞬时对象(TransientObject),简称TOl瞬时对象指的是应用程序创建出来的对象,并且未受到Hibernate控制,一旦Hibernate控制了该对象,具有... 查看详情

小白学习之hibernate学习总结

一、关于hibernate1. hibernate是什么?   Hibernate是使用在三层架构中的dao层的一个轻量级框架,与JDBC和myBatis是类似的技术,它也是基于ORM(对象关系映射:数据表中的字段和实体类中的属性一一对应)设计的,其实就... 查看详情

hibernate查询方式(hql/qbc/qbe)汇总

...库持久化层所做出的贡献有目共睹。  它所提供的数据查询方式也越来越丰富,从SQL到自创的HQL,再到面向对象的标准化查询。  虽然查询方式有点眼花缭乱,配置使用起来也稍微有点复杂。  但是丝毫掩盖... 查看详情

hibernate学习之hql与sql

Hibernate中查询:    createQuery(StringqlString)使用的是HQL语句;    createNativeQuery(StringsqlString)使用的是SQL语句; 关系HQL与SQL区别:    HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式... 查看详情

hibernate怎么用查询

刚开始学HIBERNATE不懂1:hibernate数据查询方式:有HQL方式,QBC方式,原生SQL方式。HQL适合静态查询,QBC则适合较多的动态查询。A:HQL方式,支持条件查询,连接查询,分页查询,分组查询,内置函数和自定义函数查询(SUN(),MIN(),M... 查看详情

hibernate学习之单向多对一映射

?版权声明:本文为博主原创文章,转载请注明出处说明:该实例是通过映射文件和注解两种方式实现的。可根据自己的需要选择合适的方式实例:1.项目结构2.pom.xml<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/200... 查看详情