Mybatis-04(關聯表查詢)

前言

利用mybatis框架,使用簡單的xml配置映射成數據庫中的記錄

多表聯查
  • 數據庫建表
//建立兩張表,教師表,班級表
//先建立教師表,因爲教師和班級有關聯,教師id是班級表的外鍵
CREATE TABLE teacher{
        t_id INT PRIMARY KEY AUTO_INCREMENT,
        t_name VARCHAR(20)
};
CREATE TABLE class{
      c_id INT PRIMARY KEY AUTO_INCREMENT,
     c_name VARCHAR(20),
     teacher_id INT      
}
ALTER TABLE class ADD CONSTRAINT fk_teacher_id FOREING KEY(teacher_id)REFERENCES
目錄結構

在這裏插入圖片描述

  • 建立實體類
public class Teacher {
    private int id;
    private String name;
    public int getId() {return id;}
    public void setId(int id) {this.id = id;}
    public String getName() {return name;}
    public void setName(String name) {this.name = name;}
}

public class Classes {
    private int id;
    private String name;
    private Teacher teacher;
    public int getId() {return id;}
    public void setId(int id) {this.id = id;}
    public String getName() {return name;}
    public void setName(String name) {this.name = name;}
    public Teacher getTeacher() {return teacher;}
    public void setTeacher(Teacher teacher) {this.teacher = teacher;}
}
  • 建立ClassMapper.xml文件
//方法一:
//使用嵌套結果封裝聯表查詢的數據
<select id="getClass" parameterType="int" resultMap="getClassMap">
    SELECT * FROM class c, teacher t WHERE c.teacher_id=t.tc_id AND c.c_id=#{id]
</select>
<resultMap type="Classes" id="getClassMap">
        <id property="id" column="c_id"/>
        <result property="name" column="c_name"/>
        <!--association關聯的意思,關聯到teacher-->
        <association property="teacher" javaType="Teacher">
            <id property="id" column="t_id"/>
            <result property="name" column="t_name"/>
        </association>
 </resultMap>
方法二:
//利用上個sql語句的結果作爲下次查詢的條件
<select id="getClass2" parameterType="int" resultMap="getClass2Map">
    SELECT * FROM class WHERE c_id=#{id}
</select>
<select id="getTeacher" parameterType="int" resultMap="Teacher">
    SELECT t_id id,t_name name From teacher WHERE t_id=#{id}
</select>

<resultMap type="Classes" id="getClass2Map">
        <id property="id" column="c_id"/>
        <result property="name" column="c_name"/>
      
        <association property="teacher" javaType="Teacher">
            <id property="id" column="t_id"/>
            <result property="name" column="t_name"/>
        </association>
 </resultMap>
  • 在配置文件註冊
<mapper resource="com/atguigu/day03_mybatis/Test5/ClassMapper.xml"/>
  • 測試
public class test5 {
    @Test
    public void testSelect(){
        SqlSessionFactory factory = MybatisUtils.getFactory();
        SqlSession session = factory.openSession();
        String statement = "com.atguigu.day03_mybatis.Test5.ClassMapper.getClass";
        Classes c = session.selectOne(statement,2);
        System.out.println(c);
        session.close();
    }
}

//方法二在測試類裏面調用 String statement = "com.atguigu.day03_mybatis.Test5.ClassMapper.getClass2";

  • 結果
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章