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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黑帮少爷爱上我第8集最新 荷兰精品女人性hd 和日本免费不卡在线v | 午夜影院免费体验 | 亚洲AV无码国产精品色午夜情 | 国产精品久久久久久久久免费观看 | 99这里都是精品 | japonensis日本护士18 | 爱草影院 | 欧美人shou交在线播放 | 亚洲一区二区三区深夜天堂 | 亚洲AV无码专区国产精品麻豆 | 久久受www免费人成_看片中文 | 日韩精品一区二区三区中文版 | 国产卡一卡二卡三卡四 | 欧洲网色偷偷亚洲男人的天堂 | 精品国产品香蕉在线观看 | 无人区尖叫之夜美女姐姐视频 | 国产一级在线观看 | 私人影院免费 | 成人福利免费在线观看 | 精品视频一区在线观看 | 99热这里只有精品国产在热久久 | 国产免费资源高清小视频在线观看 | 精新精新国产自在现 | 99在线视频精品费观看视 | 911精品国产亚洲日本美国韩国 | 三级理论在线观看 | 日韩福利网站 | 日韩欧美亚洲一区精选 | 国产成人啪精品视频站午夜 | 超级碰碰青草免费视频92 | 午夜精品久久久 | 免费二区 | 久久国产伦子伦精品 | 国产精品免费小视频 | 亚洲欧美一区二区三区在线观看 | 扒开胸流出吃奶 | 国产灌醉| 免费看3d小舞被躁视频网站 | 亚洲无线一二三区2021 | 桃色导航 | 久久久无码精品无码国产人妻丝瓜 |