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. netty的数据通信之心跳检测

    问题1:我们想实现客户端和服务端建立连接之后,5秒钟之后如果没有数据传输就关闭与客户端的连接. 解决办法:在服务端加上下面一条代码 ch.pipeline().addLast(new ReadTime ...

  2. shiro的基本认识及做一个简单的授权登陆的例子

    先推荐一个网站,无意中发现的.感觉蛮好的. 推荐一套完整的Shiro Demo,免费的.Shiro Demo:http://www.sojson.com/shiroDemo已经部署到线上,地址是htt ...

  3. winddow10下 virtualBox Ubuntu网络设置

    1. virtualbox 全局设置 2. 虚拟机网络设置 3.虚拟机中设置 4. 宿主机 设置 5. 最后 在虚拟机中 ping www.baidu.com

  4. KMP算法的next[]数组 的求法

    例如: next数组的求解方法是:第一位的next值为0,第二位的next值为1,后面求解每一位的next值时,根据前一位进行比较.首先将前一位与其next值对应的内容进行比较,如果相等,则该位的ne ...

  5. 【关键字】c++关键字

    1. alignas (c++11) 设置类和struct的字节对齐方式 默认取值是:  2n : 0, 1, 2, 4 , 6, 8..... 2. alignof 区分sizeof(), alig ...

  6. 自学python 6.

    内容:id() is == 编码 解码1.好声音选秀比赛评委在打分的时候可以进行输入. 假设有10个评委.让10个评委进行打分, 要求, 分数必须大于5分, 小于10分.count = 1while ...

  7. Javaweb学习笔记——(十四)—————— 服务器端验证注册登入表单项目

    项目:https://download.csdn.net/download/qq_40223688/10463436 项目 功能: *注册 *登录--------------------------- ...

  8. 二叉搜索树BST

    //遍历 void print(int p){ if(!p) return; print(left[p]); printf("%d\n",a[p]); print(right[p] ...

  9. dbms_redefinition在线重定义表结构 可以在表分区的时候使用

    dbms_redefinition在线重定义表结构 (2013-08-29 22:52:58) 转载▼ 标签: dbms_redefinition 非分区表转换成分区表 王显伟 在线重定义表结构 在线 ...

  10. aabb碰撞检测

    在做矩形重叠判断时 要判断A矩形的最大X>B矩形的最小X,A最大Y<小于B最小Y and 要判断B矩形的最大X>A矩形的最小X,B最大Y<小于A最小Y 一套规则,用2遍,很神奇 ...