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. mysql 安装部署

    如下方法 安装完成后 没有my.ini 配置文件,请结合下篇(mysql安装绑定my.ini)文章一起看. 安装包的安装方式:参考:https://www.cnblogs.com/ayyl/p/597 ...

  2. Web APi入门之Self-Host寄宿及路由原理

    前言 刚开始表面上感觉Web API内容似乎没什么,也就是返回JSON数据,事实上远非我所想,不去研究不知道,其中的水还是比较深,那又如何,一步一个脚印来学习都将迎刃而解. Self-Host 我们知 ...

  3. ruby select 方法,可用于先查询结果后,再次用条件限制

    1. 用于条件过滤 @works=DworkPro.all.order(:work_type) @work_pro=@works.select{ |x| x.job_type == 7} 2. sel ...

  4. java读大文件最快性能【转】

    java读大文件最快性能 完全引用自: 几种读大文件方法的效率对比测试 据说1.88g只要5秒左右,未亲测. /** * 读大文件 * BufferedReader + char[] * @throw ...

  5. Spyder Crashed During Last Session

    尝试一:Command: pyhton spyder --reset 尝试二:Command: spyder --show-console  (突然就好了...)

  6. JAVA中局部变量 和 成员变量有哪些区别

    JAVA中局部变量 和 成员变量有哪些区别 1.定义的位置不一样<重点>***局部变量:在方法的内部成员变量:在方法的外部,直接写在类当中 2.作用范围不一样<重点>***局部 ...

  7. Centos配置ARP和Tomcat Native

    Tomcat Native是用于Tomcat的一个可选组件,能够允许Tomcat使用一定的本地资源.性能.兼容性. 具体来说,Tomcat Native给了Tomcat访问 Apache Portab ...

  8. 我的长大app开发教程第二弹:完成ContentFragment底部按钮

    在开始之前,先上一张效果图 突然发现有点知乎的味道...的确..知乎灰#989898,知乎蓝15,136,235(逃.... 1.学P图 想我大一的时候也用过不少Adobe的软件,昨天重新打开我的Ph ...

  9. 15个新鲜出炉的 Photoshop 文本效果教程

    文本效果可能是 Photoshop 图形设计中最常用和最通用的技术之一.最重要的是你可以使用任何效果,风格或纹理来产生有趣的排版,越多人尝试过它并制作了一些精彩的教程.所以这篇文章旨在为您提供全面的 ...

  10. 俄罗斯方块部分功能(Java)

    package OO.day01; public class TetrisCell { int totalRow = 20; int totalcol = 10; //定义横宽 int row; in ...