mybatis学习5复杂查询之多对一的处理
生活随笔
收集整理的這篇文章主要介紹了
mybatis学习5复杂查询之多对一的处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
眾所周知,一個班主任有很多學生,而每個學生只有一個班主任。那么像這種情況出現在數據庫里需要怎么處理呢,本文就介紹該如何處理這種復雜查詢的情況;這種情況大致分為多對一和一對多兩種類型,今天我們就先介紹多對一的處理!
一、需要用到的數據
二、多對一是什么?
例如:多個學生擁有一個共同的老師。
然而學生實體類中沒有老師的屬性,只能通過一個中介tid來對應老師,屬性名與字段名不一致,并且這個屬性是一個對象,這該如何處理呢。
二、多對一該怎么處理
<!--多對一處理,思路相當于 子查詢 和 嵌套查詢 --><!--子查詢:按查詢處理1.查詢所有的學生信息2.查詢學生的tid,尋找對應的老師信息--><!--嵌套查詢:按結果處理select s.id sid,s.name sname,t.name tname from mybatis.student s,mybatis.teacher t where s.tid=t.id-->復雜的屬性要單獨處理,關聯:association[多對一],集合:collection[一對多]
teacher這個屬性對應的字段是tid,但他的值是一個對象,要用javaType指定這個屬性的類型是Teacher
1.按子查詢方式處理
<select id="getStudent" resultMap="StudentTeacher">select * from mybatis.student</select><resultMap id="StudentTeacher" type="Student"><result property="" column="" /><result property="" column="" /><!--association:關聯復雜的屬性要單獨處理 關聯:association[多對一] 集合:collection[一對多] --><association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/></resultMap><select id="getTeacher" resultType="Teacher">select * from mybatis.teacher where id = #{id}</select>2.按嵌套方式處理(推薦)
<select id="getStudent2" resultMap="StudentTeacher2">select s.id sid,s.name sname,t.name tname from mybatis.student s,mybatis.teacher t where s.tid=t.id</select><resultMap id="StudentTeacher2" type="Student"><result property="id" column="sid"></result><result property="name" column="s.name"></result><association property="teacher" javaType="Teacher"><result property="name" column="tname"></result></association></resultMap>總結
其實看懂了很簡單,學會mysql的人一看就已經明白了,這兩種方法的本質就是myqsl子查詢和嵌套查詢。弄懂了多對一的處理,那么一對多的處理就不言而喻了!!!
總結
以上是生活随笔為你收集整理的mybatis学习5复杂查询之多对一的处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mybatis学习4之使用注解开发实现简
- 下一篇: mybatis学习6复杂查询之一对多的处