日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

(Mybatis)复杂查询

發(fā)布時(shí)間:2025/3/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (Mybatis)复杂查询 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 多對(duì)一處理
    • 測(cè)試環(huán)境搭建
    • 按照查詢嵌套處理
    • 按照結(jié)果嵌套處理
  • 一對(duì)多處理
    • 按照查詢嵌套處理
    • 按照結(jié)果嵌套處理

多對(duì)一處理

  • 多個(gè)學(xué)生,對(duì)應(yīng)一個(gè)老師
  • 對(duì)于學(xué)生這邊而言, 關(guān)聯(lián) 多個(gè)學(xué)生,關(guān)聯(lián)一個(gè)老師 【多對(duì)一】
  • 對(duì)于老師而言, 集合 , 一個(gè)老師,有很多學(xué)生 【一對(duì)多】

測(cè)試環(huán)境搭建

創(chuàng)建表

CREATE TABLE `teacher` (`id` INT(10) NOT NULL,`name` VARCHAR(30) DEFAULT NULL,PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8INSERT 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=utf8INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('1', '小明', '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');

環(huán)境搭建

  • 導(dǎo)入lombok
  • 新建實(shí)體類(lèi) Teacher,Student
  • 建立Mapper接口
  • 建立Mapper.XML文件
  • 在核心配置文件中綁定注冊(cè)我們的Mapper接口或者文件!【方式很多,隨心選】
  • 測(cè)試查詢是否能夠成功!
    實(shí)體類(lèi)
  • @Data public class Student {private int id;private String name;private Teacher teacher; } @Data public class Teacher {private int id;private String name; }

    按照查詢嵌套處理

    <select id="getStudent" resultMap="StudentTeacher">select * from student</select><resultMap id="StudentTeacher" type="Student"><!--復(fù)雜的屬性,我們需要單獨(dú)處理 對(duì)象: association 集合: collectionjavaType="" 指定屬性的類(lèi)型!集合中的泛型信息,我們使用ofType獲取--><association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/></resultMap><select id="getTeacher" resultType="Teacher">select * from teacher where id = #{tid}</select>

    測(cè)試

    按照結(jié)果嵌套處理

    <select id="getStudent2" resultMap="StudentTeacher2">select s.id sid,s.name sname,t.name tnamefrom student s,teacher twhere 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>

    測(cè)試

    一對(duì)多處理

    實(shí)體類(lèi)

    @Data public class Teacher {private int id;private String name;private List<Student> students; } @Data public class Student {private int id;private String name;private int tid; }

    按照查詢嵌套處理

    <select id="getTeacher2" resultMap="TeacherStudent2">select * from mybatis.teacher where id = #{tid} </select><resultMap id="TeacherStudent2" type="Teacher"><collection property="students" javaType="ArrayList" ofType="Student" select="getStudentByTeacherId" column="id"/> </resultMap><select id="getStudentByTeacherId" resultType="Student">select * from mybatis.student where tid = #{tid} </select>

    按照結(jié)果嵌套處理

    <select id="getTeacher2" resultMap="TeacherStudent">select s.id sid,s.name sname,t.id tid,t.name tnamefrom student s,teacher twhere s.tid = t.id and t.id = #{tid} </select><resultMap id="TeacherStudent" type="Teacher"><result property="id" column="tid"/><result property="name" column="tname"/><!--復(fù)雜的屬性,我們需要單獨(dú)處理 對(duì)象: association 集合: collectionjavaType="" 指定屬性的類(lèi)型!集合中的泛型信息,我們使用ofType獲取--><collection property="students" ofType="Student"><result property="id" column="sid"/><result property="name" column="sname"/><result property="tid" column="tid"/></collection></resultMap>

    注意 :

  • 關(guān)聯(lián) - association 【多對(duì)一】
  • 集合 - collection 【一對(duì)多】
  • javaType & ofType
  • JavaType 用來(lái)指定實(shí)體類(lèi)中屬性的類(lèi)型
  • ofType 用來(lái)指定映射到List或者集合中的 pojo類(lèi)型,泛型中的約束類(lèi)型!
  • 總結(jié)

    以上是生活随笔為你收集整理的(Mybatis)复杂查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。