国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Mybatis一對多和多對一處理的深入講解

Mybatis一對多和多對一處理的深入講解

2021-12-29 00:51iiis1327 Java教程

Mybatis可以通過關聯查詢實現,關聯查詢是幾個表聯合查詢,只查詢一次,通過在resultMap里面的association,collection節點配置一對一,一對多的類就可以完成,這篇文章主要給大家介紹了關于Mybatis一對多和多對一處理的相關資料,需要的朋友可

建表

SQL:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
create table teacher(
    id int not null,
    name varchar(30) default null,
    primary key (id)
);
 
insert into teacher (id, name) values (1, '蔡老師');
 
create table student(
    id int not null ,
    name varchar(30) default null,
    tid int default null,
    constraint fk_tid foreign key (tid) references teacher(id)
);
 
insert 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);

多對一處理

  • 多個學生對應一個老師
  • 對于學生這邊而言,關聯。即多個學生關聯一個老師【多對一】
  • 對于老師這邊而言,集合。即一個老師有很多的學生【一對多】

mapper

?
1
2
//查詢所有的學生信息以及對應的老師的信息
List<Student> queryStudentAndTeacher();

實體類

?
1
2
3
4
5
6
7
8
9
10
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private int id;
    private String name;
 
    //學生需要關聯一個老師
    private Teacher teacher;
}
?
1
2
3
4
5
6
7
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Teacher {
    private int id;
    private String name;
}

按照查詢嵌套處理

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!--思路:
    1.查詢所有的學生
    2.根據查詢出來的學生的tid尋找對應的老師  尋找對應的老師,子查詢
-->
<resultMap id="rStuAndTea" type="student">
    <result property="id" column="id"/>
    <result property="name" column="name"/>
    <!-- 復雜的屬性我們需要單獨處理 
                            指定屬性的類型
         對象使用association  javaType
         集合使用collection   ofType
    -->
    <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>
</resultMap>
<select id="queryStudentAndTeacher" resultMap="rStuAndTea">
    select * from student
</select>
<select id="getTeacher" resultType="teacher">
    select * from teacher where id = #{id}
</select>

按照結果嵌套處理

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<!--方式二  按照結果嵌套處理-->
<resultMap id="rStuAndTea2" type="student">
    <result property="id" column="sid"/>
    <result property="name" column="sname"/>
    <association property="teacher" javaType="Teacher">
        <result property="name" column="tname"/>
    </association>
</resultMap>
<select id="queryStudentAndTeacher2" resultMap="rStuAndTea2">
    select s.id sid, s.name sname, t.name tname
    from student s, teacher t
    where s.tid = t.id
</select>

回顧Mysql多對一查詢方式

  • 子查詢
  • 聯表查詢

一對多處理

  • 一個老師有多個學生
  • 對于老師這邊而言,集合。即一個老師有很多的學生【一對多】

mapper

?
1
2
//查詢指定老師的信息及其所有的學生
Teacher queryTeaAndStu(@Param("tid") int id);

實體類

?
1
2
3
4
5
6
7
8
9
10
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Teacher {
    private int id;
    private String name;
 
    //一個老師擁有多個學生
    private List<Student> students;
}
?
1
2
3
4
5
6
7
8
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private int id;
    private String name;
    private int tid;
}

按照查詢嵌套處理

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!--按照結果嵌套查詢-->
<resultMap id="rTeaAndStu" type="teacher">
    <result property="id" column="tid"/>
    <result property="name" column="tname"/>
    <collection property="students" ofType="Student">
        <result property="id" column="sid"/>
        <result property="name" column="sname"/>
        <result property="tid" column="tid"/>
    </collection>
</resultMap>
<select id="queryTeaAndStu" resultMap="rTeaAndStu">
    select s.id sid, s.name sname, t.name tname, t.id tid
    from student s, teacher t
    where s.tid = t.id and t.id = #{tid}
</select>

按照查詢嵌套處理

?
1
2
3
4
5
6
7
8
9
10
11
<!--按照查詢嵌套處理-->
<select id="queryTeaAndStu2" resultMap="rTeaAndStu2">
    select * from teacher where id = #{tid}
</select>
<resultMap id="rTeaAndStu2" type="teacher">
    <collection property="students" javaType="ArrayList" ofType="Student"
                select="queryStudentByTeacherId" column="id"/>
</resultMap>
<select id="queryStudentByTeacherId" resultType="Student">
    select * from student where tid = #{tid}
</select>

結果映射

Mybatis一對多和多對一處理的深入講解

面試高頻點

  • MySQL引擎
  • InnoDB底層原理
  • 索引
  • 索引優化
  •  

小結

  1. 關聯 - association 【多對一】
  2. 集合 - collection 【一對多】
  3. javaType & ofType
    1. javaType 用來指定實體類中屬性的類型
    2. ofType 用來指定映射到List或者集合中的entity類型,泛型中的約束類型

注意點:

  • 保證SQL的可讀性,盡量保證通俗易懂
  • 注意一對多和多對一中屬性名和字段的問題
  • 如果問題不好排查錯誤,可以使用LOG4J日志

總結

到此這篇關于Mybatis一對多和多對一處理的文章就介紹到這了,更多相關Mybatis一對多和多對一處理內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_61200215/article/details/120256339

延伸 · 閱讀

精彩推薦
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
主站蜘蛛池模板: 日韩中文字幕一区 | 一区二区国产精品 | 国产毛片网站 | 婷婷国产 | 欧美日韩国产精品一区二区 | 狠狠的日 | 国产片av | 亚洲免费精品 | 精品久久久久久久久久久久久久 | 精品福利一区二区三区 | 亚洲少妇视频 | 97久久久| 成人影院在线观看 | 美女一区 | 精品小视频 | 日韩欧美在线看 | 亚洲国产精品激情在线观看 | 91久久精品日日躁夜夜躁国产 | 自拍偷拍 亚洲 | 日本免费在线视频 | 亚洲国产精品久久 | 欧美精品成人一区二区三区四区 | 国产女人爽到高潮免费视频 | 精品www | 超碰人人爱 | 久久久久久亚洲av毛片大全 | 久久国产欧美日韩精品 | 亚洲第1页 | 国产视频一区在线 | 国产99久久精品 | 国产中文字幕一区 | 免费黄色在线观看 | 久久国产精品久久久久久 | 午夜成人免费视频 | 国产精品久久久久久久一区探花 | 亚洲乱码国产乱码精品精的特点 | 国外爱爱视频 | 亚洲欧美中文字幕 | 亚色一区 | 国产精品亚洲一区二区三区 | 国产人妖一区二区 |