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 ...
随机推荐
- [JUC-4]ThreadPoolExecutor源码分析
相关博文: https://segmentfault.com/a/1190000008693801 https://www.jianshu.com/p/fa1eac9710c8 //构造器1 publ ...
- windows环境配置计划任务让weblogic的servers开机启动【原】
准备脚本 注意如果weblogic在D盘,那么以下cmd中的所有C:都要替换成D: , 因为windows需要切盘符. 启动weblogic管理服务adminServer 的文件: startAdmi ...
- html(常用标签,标签分类),页面模板, CSS(css的三种引入方式),三种引入方式优先级
HTML 标记语言为非编程语言负责完成页面的结构 组成: 标签:被<>包裹的由字母开头,可以结合合法字符( -|数字 ),能被浏览器解析的特殊符号,标签有头有尾 指令:被<>包 ...
- URLSearchParams 接口
URLSearchParams 接口定义了很多个用来处理 URL 参数串的方法 他可以把对象转变成url上面查询信息的写法,例如a=1&b=2 可以把请求路由中的字符串 key=1 ,拼接 ...
- j2ee应用开发调试工具
j2ee应用程序不能独立运行,需要运行在一个servlet/jsp容器中,常用的servlet/jsp容器如:tomcat,jetty等.在开发调试j2ee程序时,也需要部署在一个指定的容器中.如果每 ...
- jsp 起航 和Servlet通过attribute通信
@WebServlet(name = "ticketServlet",urlPatterns = {"/tickets"},loadOnStartup = 1) ...
- 小程序前端防止重复点击请求api的简陋方法
upload: function () { let that = this; let {uploadFlag} = that.data; if (that.data.uploadFlag) { ret ...
- 采用shell脚本定时清理Tomcat日志
1 Shell脚本案例 删除超过30天的日志文件 #!/bin/bash log_path=/mnt/software/apache-tomcat-.M22/logs d=`date +%Y-%m-% ...
- java伪代码 大道至简第一章
import.java.大道至简.*; //一·编程的精义 import.java.编程的精义.*; public class BIANCHENGDEJINGYI { if(愚公死了) 愚公的儿子,孙 ...
- 【webpack】使用DllPlugin拆分模块
开发过程中,我们经常需要引入大量第三方库,这些库并不需要随时修改或调试,我们可以使用DllPlugin和DllReferencePlugin单独构建它们. 具体使用如下: const HtmlWebp ...