日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

7.Mybatis关联表查询(这里主要讲的是一对一和一对多的关联查询)

發布時間:2023/12/13 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7.Mybatis关联表查询(这里主要讲的是一对一和一对多的关联查询) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

視頻地址:http://edu.51cto.com/sd/be679

在Mybatis中的管理表查詢這里主要介紹的是一對一和一對多的關聯查詢的resultMap的管理配置查詢,當然你也可以用包裝類來實現。不過這里不說,做關聯查詢的步驟可以簡單的總結為以下的幾步:

    1.分析出表和表之間的關聯關系

    2.Sql語句的寫法

    3.在實體類中把附表的信息添加到主查詢表中

    4.配置resulMap

      配置你主要查詢表的信息

      配置你關聯表的信息

這里我先給出幾個表的字段和關系,以三張表為例(用戶表:users,訂單表:orders,訂單詳情表:orderDetail)大概字段如下:

  Users

    Userid

    Uname

    Upassword

    Usex

  Orders

    Orderid

    Userid(外鍵指向用戶表)

    Order_unmber

    createTime

    address

  Orderdetail

    Orderdetailid

    Orderid (外鍵指向訂單表)

    Num?

  這三張表的關系簡單的可以說成如下關系:

    用戶表-->訂單表 ? 是一對一的關系

    訂單表-->訂單詳情表? 是一對多的關系

  一.這里先來看一下Mybatis中對于一對一關系的實現(以用戶表和訂單表舉例):

  這里的一個需求是:查詢訂單表的所有信息和用戶名

    1.SQL語句:  

      SELECT t_orders.* ,t_user.uname as 用戶名

      FROM t_orders,t_user?

      where t_orders.userid=t_user.userid

    結果

    2.主要查詢的訂單信息(主要查詢表),所有在訂單中添加User的對象

private Users user;//在訂單表中關聯用戶表的屬性,get,set別忘記

    3.配置一個resultMap

<resultMap?type="com.etc.entity.Orders"?id="ordersResultMap">

  <!-- 配置你主要查詢表的信息 -->

  <id?column="orderid"?property="orderid"/>

  <result?column="userid"?property="userid"/>

  <result?column="order_number"?property="order_number"/>

  <result?column="createtime"?property="createTime"/>

  <result?column="address"?property="address"/>

<!-- 配置關聯表的信息 -->

<!--

association:配置一對一關聯表的信息

property:主表中匹配關聯表的那個屬性

javaType:該屬性的全路徑(包+類名)

?-->

  <association?property="user"?javaType="com.etc.entity.User">

    <id?column="userid"?property="userid"/>

    <result?column="uname"?property="uname"/>//如果還有查詢別的信息只要配置column即可

  </association>

</resultMap>

  調用:

<select id="findByOrderUser" resultMap="ordersResultMap">SELECT t_orders.* ,t_user.uname as 用戶名FROM t_orders,t_user where t_orders.userid=t_user.userid</select>

  二.多對多關聯表的實現(多對多的實現原理和一對一的類型,所以不多做解釋,直接貼代碼

    1.Sql語句:(查詢的訂單表的全部信息和訂單詳情表的ID和數量)

      SELECT t_orders.*,t_orderdetail.orderdetailid,t_orderdetail.num

    ?FROM t_orders,t_orderdetail

    WHERE t_orderdetail.orderid=t_orders.orderid

    結果:(從這個結果可以看出來,一個訂單可以對應對個訂單詳細的記錄)

    分析:這里的主要查詢對象還是訂單表,所以要在訂單表中加入訂單詳情的對象

    2.主要查詢的訂單信息(主要查詢表),所有在訂單中添加OrderDetail的對象(并且要放在集合中)

private List<OrderDetail> orderDetail;//get set 別忘記

    ?3.配置一個resultMap(一對多使用collection)

<resultMap?type="com.etc.entity.Orders"?id="orderResultMap">

  <!-- 配置 要映射的訂單信息-->

  <id?column="orderid"?property="orderid"/>

  <result?column="userid"?property="userid"/>

  <result?column="order_number"?property="order_number"/>

  <result?column="createtime"?property="createTime"/>

  <result?column="address"?property="address"/>

  <!-- 關聯表的映射信息 -->

<!--

collection:對應查詢出來的結果有多條的映射記錄

property:對應的主表中添加的關聯表的那個屬性

ofType:就相當于是一對一中的javaType

?-->

  <collection?property="orderDetail"?ofType="com.etc.entity.OrderDetail">

    <id?column="orderdetailid"?property="orderdetailid"/>

    <result?column="num"??property="num"/>

  </collection>

</resultMap>

?

  總結:

    一對一和一對多的配置原理都很類型,主要就是通過配置resultMap

    一對一關聯表配置assocation,用javaType指定關聯表類型

    一對多關聯表配置collection,ofType指定關聯表類型

轉載于:https://www.cnblogs.com/huaixiaoz/p/5799705.html

總結

以上是生活随笔為你收集整理的7.Mybatis关联表查询(这里主要讲的是一对一和一对多的关联查询)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。