(Mybatis)复杂查询
生活随笔
收集整理的這篇文章主要介紹了
(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)境搭建
實(shí)體類(lèi)
按照查詢嵌套處理
<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>注意 :
總結(jié)
以上是生活随笔為你收集整理的(Mybatis)复杂查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: (Mybatis)lombok使用
- 下一篇: (Mybatis)缓存