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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256523.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256523.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256523.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ANSYS——查看某一截面的云圖分布(也叫做切片圖)

1.確定截面的位置 此處以圖中紅色處截面為例 2.將工作平面經過坐標變化移動到指定截面處(工作平面的XY平面與截面重合) 工作平面坐標系默認是與總體坐標系重合的,這里是先平移再進行旋轉

深度學習之keras (一) 初探

之前一段時間里&#xff0c;學習過tensorflow和Pytorch也寫了點心得&#xff0c;目前是因為項目原因用了一段時間Keras&#xff0c;覺得很不錯啊&#xff0c;至少從入門來說對新手極度友好&#xff0c;由于keras是基于tensoflow的基礎&#xff0c;相當于tensorflow的高級API吧&…

swift:高級運算符(位運算符、溢出運算符、優先級和結合性、運算符重載函數)...

swift&#xff1a;高級運算符 http://www.cocoachina.com/ios/20140612/8794.html 除了基本操作符中所講的運算符&#xff0c;Swift還有許多復雜的高級運算符&#xff0c;包括了C語和Objective-C中的位運算符和移位運算。 不同于C語言中的數值計算&#xff0c;Swift的數值計算默…

收集、報告或保存系統活動信息:sar命令

2019獨角獸企業重金招聘Python工程師標準>>> 索引 sar命令的使用常用方法 查看網絡設備&#xff08;網卡&#xff09;的狀態信息查看socket使用情況查看cpu使用情況(默認)查看內存和交換空間使用情況查看內存的統計信息查看tty設備的活動狀態查看等待運行的進程數和…

【GOF23設計模式】原型模式

【GOF23設計模式】原型模式 來源&#xff1a;http://www.bjsxt.com/ 一、【GOF23設計模式】_原型模式、prototype、淺復制、深復制、Cloneable接口 淺復制 1 package com.test.prototype;2 3 import java.util.Date;4 5 /**6 * 淺復制7 */8 public class Sheep implements C…

ANSYS——自定義的梁截面中心(法線節點)的偏置,詳細全面

目錄 1、ANSYS梁的確定 2.關于梁截面的一些名詞 總體坐標系 梁截面坐標系 梁單元的坐標系

Deepfacelab 小白教程

不小心入了AI換臉的坑&#xff0c;但是感覺AI換臉很有意思&#xff0c;第一次感覺科研使我快樂。 目錄 一、AI換臉軟件簡介 二、Deepfacelab下載安裝 三、Deepfacelab Demo實現 四、Deepfacelab 填坑 五、總結 一、AI換臉軟件簡介 這個沒有具體使用過&#xff0c;目前我…

Underscore.js 的模板功能

Underscore是一個非常實用的JavaScript庫&#xff0c;提供許多編程時需要的功能的支持&#xff0c;他在不擴展任何JavaScript的原生對象的情況下提供很多實用的功能。 無論你寫一段小的js代碼&#xff0c;還是寫一個大型的HTML5應用&#xff0c;underscore都能幫上忙。目前&…

ANSYS——查看剖面圖的應力分布云圖以及工作平面的相關設置

剖面圖和切片圖其實差不多,只是切片圖只有一個截面,而剖面圖是切去一部分保留另一部分模型,不但可以看到截面處應力分布還可以看到剩余模型的應力分布 切片應力云圖可見:https://blog.csdn.net/qq_45769063/article/details/106357700 1.剖面云圖的查看 首先將工作平面的…

2016.8.2

高端內存映射方式 高端內存映射分為三種&#xff1a;永久映射、臨時映射和非連續動態內存映射。高端內存一般是指896MB以上的頁框&#xff0c;這段區間內核一般不能直接訪問。 1.永久映射 永久內核映射允許內核建立高端頁框到內核地址空間的長期映射。它們使用主內核頁表中的一…

深度學習之pytorch(三) C++調用

玩深度學習&#xff0c;個人覺得基于anaconda的python適合開發與測試&#xff0c;C適合實際的工程部署&#xff01;而pytorch官方有編譯好的libtorch&#xff0c;特別方便&#xff0c;適合于我這樣的伸手黨和手殘黨(win10下編譯tensorflow編譯了好久都沒通過&#xff0c;好憂傷…

ANSYS入門——模態分析步驟與實例詳解

目錄 一、ANSYS求解模態分析步驟 建模 施加載荷和求解

javascript庫之Mustache庫使用說明

一、簡單示例 代碼&#xff1a; 1 function show(t) { 2 $("#content").html(t); 3 } 4 5 var view { 6 title: YZF, 7 cacl: function () { 8 return …

Light OJ 1007

求區間歐拉函數平方和。。。 最后因為longlong 范圍爆了WA 了&#xff0c; 0.0 #include<bits/stdc.h> using namespace std; const int maxn 5000000 131; typedef unsigned long long LL;bool Com[maxn]; LL Num[maxn], Prim[maxn / 3]; int Cnt;void INIT() {Num[1]…

MVC架構設計——EF-Code First

詳情參考:http://www.cnblogs.com/guomingfeng/archive/2013/05/28/mvc-ef-repository.html轉載于:https://www.cnblogs.com/shuai7boy/p/5807678.html

機器學習(一) 基于sklearn庫的數據集劃分(交叉驗證)

機器學習中首要環節就是數據集的處理&#xff0c;其中數據集的處理從個人理解(如有錯誤敬請諒解)的角度來說包括兩個方面&#xff1a;數據集劃分和數據清理。其中數據集劃分是指訓練集、驗證集和測試集的數據類別劃分&#xff1b;數據清理是指數據的清洗、刪除等等方面。這兩天…

ANSYS——模態分析的理論基礎

目錄 一、模態分析理論基礎 線性與非線性 振動與固有頻率 振動方程與振動模態

購物中心潮--我的創業之路

2014年10一個月&#xff0c;我在中國大陸從北我的兩個小伙伴跑到最南邊中國內地。大半個中國刪除更多。早在北京成立購潮商城。2014年11月&#xff0c;購潮商城正式上線。上線當天突破零訂單。2014年12月&#xff0c;正式推廣市場。滲透大學生校園。2015年2月至今&#xff0c;正…

敏捷項目開源管理軟件ScrumBasic(2)- 多項目支持

1.加入Project對象模型 public class Project{[Key][MaxLength(32)]public string ID { get; set; }public string Name { get; set; }public int Order { get; set; }public ICollection<UserStory> Stories { get; set; }public ApplicationUser Creator { get; set; }…

postgresql表和列注釋(描述)

2019獨角獸企業重金招聘Python工程師標準>>> PostgreSQL添加表和列注釋。本文為測試表test&#xff0c;默認無注釋。 test# \d關聯列表架構模式 | 名稱 | 類型 | 擁有者 | 大小 | 描述 -------------------------------------------------public | test | …