查询导师 下面的所有 老师的信息!

创建实体类 和对应的数据库

/**
*导师的实体类
*/
public class Teacher {
private Integer id;
private String name;
//导师下所有的老师
private Set<Teacher> teachers; public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Teacher> getTeachers() {
return teachers;
}
public void setTeachers(Set<Teacher> teachers) {
this.teachers = teachers;
}
public Teacher(Integer id, String name, Set<Teacher> teachers) {
super();
this.id = id;
this.name = name;
this.teachers = teachers;
}
public Teacher() {
super();
}
@Override
public String toString() {
return "Teacher [id=" + id + ", name=" + name + ", teachers="
+ teachers + "]";
}
}

创建对应的mapper文件和dao

public interface TeacherDao {
/**
* 根据导师的编号查询所有的老师信息
* 相当于递归查询
*/
List<Teacher> selectTeahcerByTid(Integer tId);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-Mapper.dtd">
<mapper namespace="cn.bdqn.dao.TeacherDao"> <resultMap type="Teacher" id="teacherMap">
<id property="id" column="id"/>
<result property="name" column="name"/>
<!-- 设置关联集合的属性
select="selectTeahcerByTid"
因为查询的结果都是一样的 递归查询
column="id"
根据查询到的id再作为参数进行下一次的查询
-->
<collection property="teachers" ofType="Teacher"
select="selectTeahcerByTid" column="id"/>
</resultMap> <select id="selectTeahcerByTid" resultMap="teacherMap">
select id,name from teacher where tid=#{xxx}
</select> </mapper>

mybatis.xml中管理mapper文件

    <!-- 加载映射文件信息 -->
<mappers>
<mapper resource="cn/bdqn/dao/TeacherMapper.xml" />
</mappers>

测试代码

package cn.bdqn.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import cn.bdqn.bean.Teacher;
import cn.bdqn.dao.TeacherDao;
import cn.bdqn.util.SessionUtil; public class TeacherTest {
TeacherDao dao;
SqlSession session; @Before
public void before() {
// 因为需要关闭session 需要把session提取出去
session = SessionUtil.getSession();
dao = session.getMapper(TeacherDao.class);
} @After
public void after() {
if (session != null) {
session.close();
}
} /**
* 根据导师的id查询出对应的所有老师信息
*/
@Test
public void test1() {
List<Teacher> list = dao.selectTeahcerByTid(1);
for (Teacher teacher : list) {
System.out.println(teacher);
}
} }

查询导师 的信息 以及 下面的所有 老师的信息!

修改dao 和 mapper文件

public interface TeacherDao {
/**
* 根据导师的编号查询所有的老师信息以及自身的信息
*/
Teacher selectTeahcerById(Integer tId);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-Mapper.dtd">
<mapper namespace="cn.bdqn.dao.TeacherDao"> <select id="selectTeahcerByTid" resultMap="teacherMap">
select id,name from teacher where tid=#{xxx}
<!--#{xxx} 就是再根据tid查询对应的子项 -->
</select> <resultMap type="Teacher" id="teacherMap">
<id property="id" column="id"/>
<result property="name" column="name"/>
<!-- 设置关联集合的属性
select="selectTeahcerByTid"
因为查询的结果都是一样的 递归查询
column="id"
根据查询到的id再作为tid进行下一次的查询
-->
<collection property="teachers" ofType="Teacher"
select="selectTeahcerByTid" column="id"/>
</resultMap> <select id="selectTeahcerById" resultMap="teacherMap">
<!--先查询出 自身的信息 -->
select id,name from teacher where id=#{xxx}
</select> </mapper>

修改测试类

    /**
* 根据导师的id查询出对应的所有老师信息
*/
@Test
public void test1() {
Teacher teacher = dao.selectTeahcerById(1);
System.out.println(teacher);
}

mybatis09--自连接一对多查询的更多相关文章

  1. mybatis0205 一对多查询 复杂

    查询所有用户信息,关联查询订单及订单明细信息及商品信息,订单明细信息中关联查询商品信息 1.1sql 主查询表:用户信息 关联查询:订单.订单明细,商品信息 SELECT orders.*, user ...

  2. mybatis0204 一对多查询

    查询所有订单信息及订单下的订单明细信息. sql语句 主查询表:订单表 关联查询表:订单明细 SELECT orders.*, user.username, user.sex , orderdetai ...

  3. Mybatis一对多查询得不到多方结果

    一对多查询:一个年级对应多个学生,现在要查询年级(带学生)信息. 查询结果: [main] INFO com.java1234.service.GradeTest - 查询年级(带学生)[main] ...

  4. 非关心数据库无法进行连表查询 所以我们需要在进行一对多查询时候 无法满足 因此需要在"1"的一方添加"多"的一方的的id 以便用于进行连表查询 ; 核心思想通过id进行维护与建文件

     非关心数据库无法进行连表查询 所以我们需要在进行一对多查询时候 无法满足 因此需要在"1"的一方添加"多"的一方的的id 以便用于进行连表查询 ; 核心思想通 ...

  5. flask的orm框架(SQLAlchemy)-一对多查询以及多对多查询

    一对多,多对多是什么? 一对多.例如,班级与学生,一个班级对应多个学生,或者多个学生对应一个班级. 多对多.例如,学生与课程,可以有多个学生修同一门课,同时,一门课也有很多学生. 一对多查询 如果一个 ...

  6. sql 一对多查询

    1. 一对多查询 查询departmentinfo字典下所有部门的人员数量 select * from departmentinfo a left join (select count(*) User ...

  7. mybatis的一对一,一对多查询,延迟加载,缓存介绍

    一对一查询 需求 查询订单信息关联查询用户信息 sql语句 /*通过orders关联查询用户使用user_id一个外键,只能关联查询出一条用户记录就可以使用内连接*/ SELECT orders.*, ...

  8. mybatis由浅入深day02_3一对多查询

    3 一对多查询 3.1 需求(查询订单及订单明细的信息) 查询订单及订单明细的信息. 3.2 sql语句 确定主查询表:订单表 确定关联查询表:订单明细表 在一对一查询基础上添加订单明细表关联即可. ...

  9. Excel一对多查询(index+small+if)

    一.学习 一对多查询模式化数组公式: =INDEX(区域,SMALL(IF(条件,行号数组,4^8),ROW(A1))) 三键齐按(ctrl+shift+回车) 在具有多个符合条件的情况下,提取和匹配 ...

  10. hibernate一对多查询

    一对多查询 1,同时添加老师和学生案例 在进行具有关联关系的对象同时添加时 首先绑定对像间的关系 ---将多方关联一方 ---将一方关联多方 然后全部添加 备注: 1,保存老师对象时, 由于设置了学生 ...

随机推荐

  1. window Form中使用Font Awesome z

    图标字体是矢量的,矢量图意味着每个图标都能在所有大小的屏幕上完美呈现,可以随时更改大小和颜色,而且不失真,真心给人一种“高大上”的感觉.由于Font Awesome是完全免费的,无论个人还是商业使用, ...

  2. 测试通过!为何线上还有很多BUG?实践中的质量控制

    质量控制 大多数测试人员认为测试工作是发现bug,虽然这是测试的主要任务,但其实测试最重要的任务是质量控制,而发现bug和验证bug只是质量控制的一个重要环节而已. 我想很多测试人员都经历过这样的场景 ...

  3. 通过IntelliJ IDEA和Maven命令查看某个jar包是怎么引入的

    发现打包的时候引入的jar包有几百个,如果想知道某个jar包是如何引入的,可以 看Maven Projects,点开某个Module的Dependencies 一层一层展开就可以了 可以直接输入名称高 ...

  4. Docker实现容器具有固定IP

    Docker的网络类型 Docker安装后,默认会创建三种网络 $ docker network ls NETWORK ID NAME DRIVER SCOPE 6bdc00ad2a8d bridge ...

  5. 20180821 Python学习笔记:如何获取当前程序路径

    20180821 Python学习笔记:如何获取当前程序路径 启动的脚本的路径为:D:\WORK\gitbase\ShenzhenHouseInfoCrawler\main.py 当前脚本的路径为:D ...

  6. Get the client's IP address in socket.io

    From: https://www.wentong.org/codex/question-2018081564702.html When using socket.IO in a Node.js se ...

  7. 命令 上传项目到git中

    点击Clone or dowload会出现一个地址,copy这个地址备用. 接下来就到本地操作了,首先右键你的项目,如果你之前安装git成功的话,右键会出现两个新选项,分别为Git Gui Here, ...

  8. sort is deprecated, use sort_values(inplace=True) for INPLACE sorting

    排序是过时的,用sort_values(到位=真)为就地排序

  9. 超简单的okHttpUtils封装(下)

      版权声明:转载请注明出处:http://blog.csdn.net/piaomiao8179 https://blog.csdn.net/piaomiao8179/article/details/ ...

  10. golang:iconv

    最近在做邮件解析的工作,遇到需要转字符集编码的情况,go官方好像没有提供这样的库,于是从github上找了一下. https://github.com/qiniu/iconv 开发环境: linux ...