hibernate框架学习第五天:数据查询、投影等
复习
day1
环境搭建
CRUD操作DB
6个核心的API
day2
TO PO DO 及其状态切换
OID 自然主键 代理主键(uuid)
一级缓存 Session绑定
load/get
关系
1对1
1对多(重点) 一set one-to-many 多many-to-one
对多对 两边都是set many-to-many
表结构 外键
对象 Set 对象
配置
级联操作 cascade 多
inverse true/false
--------------------------------------------
数据查询(数据检索)
OID数据查询方式
load/get 3个不同点
HQL数据查询方式
HQL语句 Query
QBC数据查询方式
Criteria
本地SQL查询方式
SQL语句 SQLQuery
OGN数据查询方式
获取到了对象后,就可以读取对象中所包含的对象的属性
对象名.对象名.属性
sm.teacher.teacherName
HQL数据查询方式
1.简单查询
select内容是按照数据库的顺序给定的,开发中字段
2.链式格式
3.查询结果的获取
查询数据总量:
多条数据
单一数据
查询结果
单一对象或者单一属性
多个属性或对象
4.别名
5.聚合函数使用
6.分页
7.条件查询
参数设定可以使用索引格式或者使用变量名格式
设置参数
setParameter(??,??)
setLong(??,??) setString(??,??)
setEntity(??,对象)
*对象必须是DO PO(具有OID)
8.投影
构造方法
List
Map
0 李若亮
1 Jock
0 张三丰
1 张真人
9.分组
group by 属性
10.排序
order by 属性
11.多态查询(不用)
OrderModel
Order1Model
Order2Model
如果当前模型在cfg.xml中注册了,包名可以省略不写
java.lang.Object
TeacherModel
12.配置格式的查询
1.在任意的hbm.xml文件中添加命名的查询HQL,query元素属于hibernate-mapping子元素,不是class的子元素
<query name="getAll">
<![CDATA[from TeacherModel where teacherName = :name]]>
</query>
2.Query对象获取
s.getNamedQuery(配置查询的名称"getAll")
3.其他内容同普通查询
以上操作均为单表查询
-----------------
以下操作为多表查询
多表查询,7种
交叉连接(笛卡尔积)
内连接
内连接
“from TeacherModel tm inner join tm.students s”
数据模型:主表数据 主表关联的数据
数据总量:关联数据总量
迫切内连接
“from TeacherModel tm inner join fetch tm.students s”
数据模型:主表数据
数据总量:关联数据总量
隐式内连接
“from TeacherModel”
数据模型:主表数据
数据总量:主表数据总量
外连接
左外连接
“from TeacherModel tm left outer join tm.students s ”
数据模型:主表数据 主表关联的数据
数据总量:从表被关联数据总量+主表未关联数据总量
迫切左外连接
“from TeacherModel tm left outer join fetch tm.students s ”
数据模型:主表数据
数据总量:从表被关联数据总量+主表未关联数据总量
右外连接
“from TeacherModel tm right out join tm.students s”
数据模型:主表数据 主表关联的数据
数据总量:从表数据总量
迫切连接与非迫切连接区别
0.获取的数据总量都相同
1.非迫切连接包含主和从
2.迫切连接只包含主
hibernate框架学习第五天:数据查询、投影等的更多相关文章
- hibernate框架学习笔记7:HQL查询、Criteria查询简介
HQL查询:hibernate独有的查询语言 适用于不复杂的多表查询 示例: 实体类: package domain; public class Customer { private Long cus ...
- hibernate框架学习笔记11:Criteria查询详解
创建实体类对象: package domain; import java.util.HashSet; import java.util.Set; //客户实体 public class Custome ...
- hibernate框架学习笔记10:HQL查询详解
HQL语句中不可以出现与表有关的内容,而是对象的属性 实体类(注意配置文件): package domain; import java.util.HashSet; import java.util.S ...
- hibernate框架学习之数据查询(QBC)
lQBC(Query By Criteria)是一种Hibernate中使用面向对象的格式进行查询的计数 lQBC查询方式步骤 •获取Session对象 •初始化Criteria对象(使用Sessio ...
- hibernate框架学习之数据查询(HQL)
lHibernate共提供5种查询方式 •OID数据查询方式 •HQL数据查询方式 •QBC数据查询方式 •本地SQL查询方式 •OGN数据查询方式 OID数据查询方式 l前提:已经获取到了对象的OI ...
- hibernate框架学习之使用SQLQuery查询数据
SQLQuery对象的获取 Hibernate支持使用原生SQL语句进行查询,通过session对象获得SQLQuery对象进行,需要传入SQL语句 SQLQuery createSQLQuery(S ...
- hibernate框架学习第六天:QBC、分页查询、投影、数据加载策略、二级缓存
QBC查询 1.简单查询 Criteria c = s.createCriteria(TeacherModel.class); 2.获取查询结果 多条:list 单挑:uniqueResult 3.分 ...
- hibernate框架学习第二天:核心API、工具类、事务、查询、方言、主键生成策略等
核心API Configuration 描述的是一个封装所有配置信息的对象 1.加载hibernate.properties(非主流,早期) Configuration conf = new Conf ...
- hibernate的基础学习--多表关联数据查询
Hibernate共提供4种多表关联数据查询方式 OID数据查询+OGN数据查询方式 HQL数据查询方式 QBC数据查询方式 本地SQL查询方式(hibernate很少用) 1.OID数据查询+OGN ...
随机推荐
- mssql 数据库表行转列,列转行 比较经典
--行列互转 /******************************************************************************************** ...
- Linux学习笔记:【002】ARM指令流水线
指令的处理 在CPU中,对于指令的处理一般分为: 1.取指令阶段 取指令(Instruction Fetch,IF)阶段是将一条指令从主存中取到指令寄存器的过程. 程序计数器PC中的数值,用来指示当前 ...
- redis集群之哨兵模式【原】
redis集群之哨兵(sentinel)模式 哨兵模式理想状态 需要>=3个redis服务,>=3个redis哨兵,每个redis服务搭配一个哨兵. 本例以3个redis服务为例: 一开始 ...
- jQuery使用(一):jQuery对象与选择器
一.简单的一些介绍 1.jQuery是由普通的是由一些系列操作DOM节点的函数和一些其他的工具方法组成的js库. 2.为什么要使用jQuery库? jQuery面向用户良好的设计在使用过程中彻底解放了 ...
- 052、overlay如何实现跨主机通信?(2019-03-19 周二)
参考https://www.cnblogs.com/CloudMan6/p/7305989.html 今天开始学习 overlay 网络跨主机通信的原理 root@host01:~# ufw ...
- Java集合操作精华总结
一.Set1.HashSet boolean add(E e) 添加 访问 boolean remove(E e) 删除 Iterator<E> iterator 遍历 int size( ...
- Android允许在UI线程中使用网络访问
StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode ...
- 【五】服务熔断、降级 —— Hystrix(豪猪)
分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖,每个依赖关系将在某些时候将不可避免地失败. 服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务 B和微服务 ...
- python中的*和**的用途
def function_with_one_star(*t): print(t, type(t)) def function_with_two_stars(**d) print(d, ty ...
- c# 读取excels
DataTable ExcelTable; DataSet ds = new DataSet(); //Excel 文件一般都保存为统一的xls的连接 其 ...