mybatis_10多對一處理

多對一處理

多對一:java

  • 多個學生,對應一個老師
  • 對於學生這邊而言, 關聯 .. 多個學生,關聯一個老師 【多對一】
  • 對於老師而言, 集合 , 一個老師,有不少學生 【一對多】

SQL:sql

CREATE TABLE `teacher` (
  `id` INT(10) NOT NULL,
  `name` VARCHAR(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO teacher(`id`, `name`) VALUES (1, '肖老師'); 

CREATE TABLE `student` (
  `id` INT(10) NOT NULL,
  `name` VARCHAR(30) DEFAULT NULL,
  `tid` INT(10) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fktid` (`tid`),
  CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8


INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('1', 'loading', '1'); 
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('2', '小紅', '1'); 
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('3', '小張', '1'); 
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('4', '小李', '1'); 
INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('5', '小王', '1');

測試環境搭建

  1. 導入lombok
  2. 新建實體類 Teacher,Student
  3. 創建Mapper接口
  4. 創建Mapper.XML文件
  5. 在覈心配置文件中綁定註冊咱們的Mapper接口或者文件!【方式不少,隨心選】
  6. 測試查詢是否可以成功!

按照查詢嵌套處理

<!--
    思路:
        1. 查詢全部的學生信息
        2. 根據查詢出來的學生的tid,尋找對應的老師!  子查詢
    -->

<select id="getStudent" resultMap="StudentTeacher">
    select * from student
</select>

<resultMap id="StudentTeacher" type="Student">
    <!--property屬性是字段中的屬性 property是數據庫表中的屬性-->
    <result property="id" column="id"/>
    <result property="name" column="name"/>
    <!--複雜的屬性,咱們須要單獨處理 對象: association 集合: collection -->
    <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>
</resultMap>

<select id="getTeacher" resultType="Teacher">
    select * from teacher where id = #{id}
</select>

按照結果嵌套處理

<!--按照結果嵌套處理-->
<select id="getStudent2" resultMap="StudentTeacher2">
    select s.id sid,s.name sname,t.name tname
    from student s,teacher t
    where s.tid = t.id;
</select>

<resultMap id="StudentTeacher2" type="Student">
    <result property="id" column="sid"/>
    <result property="name" column="sname"/>
    <association property="teacher" javaType="Teacher">
        <result property="name" column="tname"/>
    </association>
</resultMap>

回顧Mysql 多對一查詢方式:數據庫

  • 子查詢
  • 聯表查詢
相關文章
相關標籤/搜索