激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: av影院在线播放 | 国产精品亚洲综合一区二区三区 | 奇米影视亚洲精品一区 | 成人在线精品视频 | 国产精品www | 十级毛片 | 午夜在线观看视频网站 | 九色中文字幕 | 羞羞的动漫在线观看 | 久久久久亚洲精品 | 中国国语毛片免费观看视频 | 久久精品一区视频 | www69xxxxx| 欧美成人亚洲 | jj视频在线播放 | 99久久精品免费视频 | 久久久国产精品网站 | 成人做爰高潮片免费视频美国 | 欧美一级做一级爱a做片性 91在线视频观看 | 欧美一级淫片免费播放口 | 国产美女做爰免费视 | 污版视频在线观看 | 麻豆国产网站 | 国产精品久久久久久久久久大牛 | 素人视频在线观看免费 | 久久91精品 | 中国av免费观看 | 国产露脸精品爆浆视频 | 国产精品久久久久久久av | 92看片淫黄大片欧美看国产片 | 成人在线视频免费 | 最新日本中文字幕在线观看 | 亚洲91网站 | www国产成人免费观看视频,深夜成人网 | 久久久tv | 中文黄色一级片 | 日韩黄色片在线观看 | 一级电影免费看 | 请播放一级毛片 | 欧美精品免费一区二区三区 | 进去了(高h) |