一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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

服務器之家 - 編程語言 - Java教程 - mybatis一對多查詢功能

mybatis一對多查詢功能

2020-08-13 12:06精品唯居 Java教程

這篇文章主要介紹了mybatis一對多查詢功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

 首先,我們還是先給出一個需求:根據訂單id查詢訂單明細——我們知道,一個訂單里面可以有多個訂單的明細(需求不明確的同學,請留言或者去淘寶網上的訂單處點一下就知道了)。這個時候,一個訂單,對應多個訂單的id。這種需求出現的時候,我們應該如何查詢呢?

  此時我們的數據模型如下圖(左)由于查詢用戶也是我們的需求,所以就在原有的基礎上進行擴展,數據模型如下(右):

mybatis一對多查詢功能mybatis一對多查詢功能

    很顯然,如果用resulttype的方式去實現的話,是不合理的了。因為我們需要創建一個既有訂單又有訂單明細的pojo然后呢,我們的mybatis框架會為我們映射出很多個pojo對象(有多少個訂單明細就有多少個對象)。

    所以我們需要使用resultmap的方式進行處理。解決問題的思路是:在orders類中增加一個訂單明細的list字段將list的類型定義為orderdetail類型。然后通過配置文件,將得到的數據,通過resultmap的collection標簽進行映射到list中。

    具體實現如下:

  sql語句

    確定主查詢表:訂單表

    確定關聯查詢表:訂單明細表

    在一對一查詢基礎上添加訂單明細表關聯即可。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
select
 orders.*,
 user.username,
 user.sex,
 user.address,
 orderdetail.id orderdetail_id,
 orderdetail.items_id,
 orderdetail.items_num,
 orderdetail.orders_id
from
 orders,
 user,
 orderdetail
where orders.user_id = user.id and orderdetail.orders_id=orders.id

  問題展示

    查詢完畢以后,我們發現了一個問題:如圖所示,我們的id出現了多條,這是因為數據庫中對應的多個訂單詳情共同使用一個訂單id導致的。這就導致了每條記錄中都會出現一個orders的記錄。具體解決辦法,開始的時候就說了,這里就不再贅述了。

mybatis一對多查詢功能

  在orders中添加list訂單明細屬性  

mybatis一對多查詢功能  

    定義resultmap

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!-- 訂單及訂單明細的resultmap
  使用extends繼承,不用再重復用戶的映射
   -->
  <resultmap type="cn.itcast.mybatis.po.orders" id="dinxtends="ordersuserresultmap">
    <!-- 訂單信息 -->
    <!-- 用戶信息 -->
    <!-- 使用extends繼承,不用在中配置訂單信息和用戶信息的映射 -->
    <!-- 訂單明細信息
    一個訂單關聯查詢出了多條明細,要使用collection進行映射
    collection:對關聯查詢到多條記錄映射到集合對象中
    property:將關聯查詢到多條記錄映射到cn.itcast.mybatis.po.orders哪個屬性
    oftype:指定映射到list集合屬性中pojo的類型
     -->
     <collection property="orderdetails" oftype="cn.itcast.mybatis.po.orderdetail">
       <!-- id:訂單明細唯 一標識
       property:要將訂單明細的唯 一標識 映射到cn.itcast.mybatis.po.orderdetail的哪個屬性
        -->
       <id column="orderdetail_id" property="id"/>
       <result column="items_id" property="itemsid"/>
       <result column="items_num" property="itemsnum"/>
       <result column="orders_id" property="ordersid"/>
     </collection>
  </resultmap>

   mybatis一對多查詢功能   

  mapper  

mybatis一對多查詢功能  

  總結

    其實就是使用resultmap的collection對關聯查詢的多條記錄映射到一個list集合屬性中。

以上所述是小編給大家介紹的mybatis一對多查詢功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/liyasong/p/mybatis_yddcx.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91在线老师啪国自产 | 暖暖视频日本 | 午夜视频一区二区 | 欧美日韩精品一区二区三区视频 | 亚洲欧美日韩天堂 | 成年男女免费大片在线观看 | wc凹凸撒尿间谍女厕hd | 天天天综合网 | 视频一本大道香蕉久在线播放 | 国产精品久久久精品日日 | 亚洲国产精品自在现线让你爽 | 色综合天天综合网看在线影院 | 娇妻与公陈峰姚瑶小说在线阅读 | 18欧美同性videos可播放 | 国内在线播放 | 人成午夜免费大片在线观看 | 亚洲精品有码在线观看 | 午夜视频一区二区 | 国产新疆成人a一片在线观看 | 日本久久热| 成人久久18免费网站 | 国产午夜精品一区二区 | 视频一区二区三区在线 | 亚洲国产精品福利片在线观看 | 男人天堂2023 | 日韩欧美一卡二区 | ysl千人千色t9t9t9t9 | 亚洲首页国产精品丝袜 | 国产码一区二区三区 | 日日干天天爽 | 隔壁老王国产精品福利 | www.久久av.com | 香蕉久久久 | 99久久精品99999久久 | asspics大尿chinese| 亚洲视频一区二区在线观看 | 美女啪啪国产 | 国产农村乱子伦精品视频 | 青青青视频免费线看 视频 青青青青青国产免费手机看视频 | 欧美a级完整在线观看 | 关晓彤被调教出奶水的视频 |