package cn.itcast.h3.hql;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session; import cn.itcast.h3.hql.vo.StudentModel;
import cn.itcast.h3.hql.vo.TeacherModel;
import cn.itcast.h3.util.HibernateUtil; //多表查询
public class MulHQLApp {
//内连接
void testMulInner(){
Session s = HibernateUtil.getSession(); Query q = s.createQuery("from TeacherModel tm inner join tm.students s");
List<Object[]> queryList = q.list();
System.out.println(queryList.size());
for(Object[] objs:queryList){
for(Object obj:objs){
System.out.print(obj+"\t");
}
System.out.println();
}
s.close();
}
//迫切内连接
void testMulInner2(){
Session s = HibernateUtil.getSession(); Query q = s.createQuery("select DISTINCT tm from TeacherModel tm inner join fetch tm.students s");
List<Object> queryList = q.list();
System.out.println(queryList.size());
for(Object obj:queryList){
System.out.println(obj);
}
s.close();
}
//隐式内连接
void testMulInner3(){
Session s = HibernateUtil.getSession(); Query q = s.createQuery("from TeacherModel");
List<Object> queryList = q.list();
System.out.println(queryList.size());
for(Object obj:queryList){
System.out.println(obj);
}
s.close();
}
//左外连接
void testMulOuter1(){
Session s = HibernateUtil.getSession(); Query q = s.createQuery("from TeacherModel tm left outer join tm.students s");
List<Object[]> queryList = q.list();
System.out.println(queryList.size());
for(Object[] objs:queryList){
for(Object obj:objs){
System.out.print(obj+"\t");
}
System.out.println();
}
s.close();
}
//迫切左外连接
void testMulOuter2(){
Session s = HibernateUtil.getSession(); Query q = s.createQuery("from TeacherModel tm left outer join fetch tm.students s");
List<Object> queryList = q.list();
System.out.println(queryList.size());
for(Object obj:queryList){
System.out.println(obj);
}
s.close();
}
//右外连接
void testMulOuter3(){
Session s = HibernateUtil.getSession(); Query q = s.createQuery("from TeacherModel tm right outer join tm.students s");
List<Object[]> queryList = q.list();
for(Object[] objs:queryList){
for(Object obj:objs){
System.out.print(obj+"\t");
}
System.out.println();
}
s.close();
}
void fn(){
Session s = HibernateUtil.getSession(); Query q = s.createQuery("from TeacherModel");
List<TeacherModel> queryList = q.list();
// System.out.println(((TeacherModel)queryList.get(0)[0]).getStudents());
// System.out.println(((StudentModel)queryList.get(0)[1]).getTeacher());
System.out.println(queryList.get(0).getStudents());
s.close();
}
void fn1(){
Session s = HibernateUtil.getSession(); Query q = s.createQuery("from TeacherModel tm right outer join tm.students s");
List<Object[]> queryList = q.list();
System.out.println(((TeacherModel)queryList.get(35)[0]).getStudents());
// System.out.println(((StudentModel)queryList.get(0)[1]).getTeacher());
// System.out.println(queryList.get(30).getStudents().size()); s.close();
}
public static void main(String[] args) {
new MulHQLApp().fn1();
}
}
/*
List<Object> queryList = q.list();
for(Object obj:queryList){
System.out.println(obj);
} List<Object[]> queryList = q.list();
for(Object[] objs:queryList){
for(Object obj:objs){
System.out.print(obj+"\t");
}
System.out.println();
} */

hibernate框架学习之多表查询helloworld的更多相关文章

  1. hibernate框架学习之增删改查helloworld

    插入数据删除数据修改数据查询单条数据查询多条数据 HelloWorldApp.java package cn.itcast.h3.helloworld; import org.hibernate.Se ...

  2. hibernate框架学习之使用SQLQuery查询数据

    SQLQuery对象的获取 Hibernate支持使用原生SQL语句进行查询,通过session对象获得SQLQuery对象进行,需要传入SQL语句 SQLQuery createSQLQuery(S ...

  3. Hibernate框架学习(五)——批量查询(概述)

    一.HQL查询(Hibernate Query Language)多表查询,但不复杂时使用 Hibernate独家查询语言,属于面向对象的查询语言 1.基本查询 2.条件查询 注意:HQL语句中不可能 ...

  4. hibernate框架学习笔记10:HQL查询详解

    HQL语句中不可以出现与表有关的内容,而是对象的属性 实体类(注意配置文件): package domain; import java.util.HashSet; import java.util.S ...

  5. hibernate框架学习笔记7:HQL查询、Criteria查询简介

    HQL查询:hibernate独有的查询语言 适用于不复杂的多表查询 示例: 实体类: package domain; public class Customer { private Long cus ...

  6. hibernate框架学习第六天:QBC、分页查询、投影、数据加载策略、二级缓存

    QBC查询 1.简单查询 Criteria c = s.createCriteria(TeacherModel.class); 2.获取查询结果 多条:list 单挑:uniqueResult 3.分 ...

  7. hibernate框架学习第五天:数据查询、投影等

    复习day1环境搭建CRUD操作DB6个核心的APIday2TO PO DO 及其状态切换OID 自然主键 代理主键(uuid)一级缓存 Session绑定 load/get关系1对1 1对多(重点) ...

  8. Hibernate框架学习(八)——查询-HQL语法

    一.单表查询 1.基础语法 2.排序 3.条件 4.分页 5.聚合 6.投影 二.多表查询 1.回顾原生SQL 1>交叉连接-笛卡尔积(避免)select * from A,B; 2>内连 ...

  9. [ SSH框架 ] Hibernate框架学习之二

    一.Hibernate持久化类的编写规范 1.什么是持久化类 Hibernate是持久层的ORM影射框架,专注于数据的持久化工作.所谓持久化,就是将内存中的数据永久存储到关系型数据库中.那么知道了什么 ...

随机推荐

  1. 标签中的onclick调用js方法传递多个参数的解决方案

    1.JS方法 <script type="text/javascript"> funcation cc(parameter1,parameter2,parameter3 ...

  2. hihoCoder #1465 : 后缀自动机五·重复旋律8

    http://hihocoder.com/problemset/problem/1465 求S的循环同构串在T中的出现次数 将串S变成SS 枚举SS的每个位置i,求出以i结尾的SS的子串 与 T的最长 ...

  3. 伯克利SocketAPI(一) socket的C语言接口/最简单的服务器和对应的客户端C语言实现

    1. 头文件 2. API函数 3. 最简单的服务器和对应的客户端C语言实现 3.1 server #include <sys/types.h> #include <sys/sock ...

  4. PHP7 网络编程(二)daemon守护进程

    前言 在一个多任务的计算机操作系统中,守护进程(英语:daemon,/ˈdiːmən/或/ˈdeɪmən/)是一种在后台执行的计算机程序.此类程序会被以进程的形式初始化.守护进程程序的名称通常以字母“ ...

  5. Chrome刷新缓存

    Ctrl+Shift+Del  清除Google浏览器缓存的快捷键  Ctrl+Shift+R  重新加载当前网页而不使用缓存内容

  6. 解析ArcGis拓扑——检查的流程,以面重叠检查为例

    最简单的面重叠错误检查是使用“地理处理”——“面相交”进行检查,其结果是重叠部分提取而成的新面要素类.本例不讲述此种方法. step1 准备待拓扑检查数据 名词: 数据库 DataBase→顾名思义, ...

  7. SpringBoot入门笔记(三)、热加载

    1.配置热加载环境,在pom.xml添加如下代码 <build> <!--springloader plugin --> <plugins> <plugin& ...

  8. SQLite 数据库介绍和基本用法

    Ø  简介 SQLite 是一款轻量级的关系型数据库,同时也是一种嵌入式数据库,与 Oracle.MySQL.SQL Server 等数据库不同,它可以内嵌在程序中,是程序中的一个组成部分.所以,经常 ...

  9. TCP简单回射程序

    一.程序功能 (1)客户从标准输入读入一行文本行,并写给服务器: (2)服务器从网络输入读入这行文本,并回射给客户: (3)客户从网络输入读入这行回射文本,并显示在标准输出上 二.服务器程序 #inc ...

  10. 割点判断+luogu 3469 POI2008 BLO

    1.根节点,有2棵及以上子树 2.非根节点,有子节点dfn[u]<=low[v] #include <bits/stdc++.h> #define N 1000050 using n ...