1. 程式人生 > >SSM實現多表連線查詢(一對多關聯)

SSM實現多表連線查詢(一對多關聯)

    SSM 各種配置資訊 就 不再贅述,之前一篇寫過。

表1 對應的 pojo      - - - 表1 欄位   id、name          List<Two>是表2 查詢返回來的結果集


表2 對應的 pojo    ---- 表2 欄位 id、name、pid             List<Three> 是表3查詢返回來的結果集


表3 對應的 pojo    ---- 表3 欄位 id、name、pid


id欄位 均 自增。

為了實現 查詢 表一的 資訊 連帶 將表二和 表三的 資料 顯示出來

在 維護sql語句的 xml 檔案中 配置如下資訊。


標籤 屬性 解釋:

<mapper namespace="  ">

需要掃描的dao層介面所在的位置

 <resultMap type="  " id="  ">  

resultMap : 這個標籤就是用來給 pojo中的欄位配置註釋的。 使用時機:pojo變數和資料庫欄位名不一樣。以及多表連線查詢

type : pojo完全限定名。如果配置了typeAliasesPackage,則可省略包路徑。

id:  就是給 這個被 配置了 欄位的 pojo 起個別名 ,之後會用到。

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

property:pojo中 需要加註釋的變數名,

column:註釋,對應的資料庫中的欄位名。由於我第二個表的查詢是基於 第一個表的id來查的,而下面需要提供column,所以即使 pojo的變數名,和資料庫中的欄位名一樣 ,也需要配置。

<collection property="twos" column="id" javaType="java.util.List" ofType="Two" select="getTwosByPid">

collection :給pojo中的子表 集合變數 進行 相關配置。

property:子表對應的pojo中的變數名

column :關聯的外來鍵。

如  select id,name,pId from two where id=    就是基於表1的 id 查詢的。

 javaType : 集合的 型別

 ofType:集合泛型的型別

select : 集合變數 是通過 哪個查詢語句 查詢出來的

  <select id="getTwosByPid" resultMap="twoMap" parameterType="java.lang.Integer" >

    select標籤: 配置查詢語句

    id : dao層介面 對應的方法 名

    resultMap: 返回的結果 需要對映到的 pojo 類名(如果沒配置typeAliasesPackage,則需要寫類全名)。 

    如果該pojo被 配置過欄位,則需要填寫 配置pojo的那個標籤的id

    parameterType: 執行該 查詢語句 傳入的 引數型別。 名也要寫全