mybatis實現一對一查詢

sql語句

確定查詢的主表:訂單表
確定查詢的關聯表:用戶表
關聯查詢使用內鏈接?還是外鏈接?
由于orders表中有一個外鍵(user_id),通過外鍵關聯查詢用戶表只能查詢出一條記錄,可以使用內鏈接。

SELECT 
  orders.*,
  USER.username,
  USER.sex,
  USER.address 
FROM
  orders,
  USER 
WHERE orders.user_id = user.id

定義resultMap

<!-- 訂單查詢關聯用戶的resultMap
    將整個查詢的結果映射到cn.itcast.mybatis.po.Orders中
     -->
    <resultMap type="cn.itcast.mybatis.po.Orders" id="OrdersUserResultMap">
        <!-- 配置映射的訂單信息 -->
        <!-- id:指定查詢列中的唯 一標識,訂單信息的中的唯 一標識,如果有多個列組成唯一標識,配置多個id
            column:訂單信息的唯 一標識 列
            property:訂單信息的唯 一標識 列所映射到Orders中哪個屬性
          -->
        <id column="id" property="id"/>
        <result column="user_id" property="userId"/>
        <result column="number" property="number"/>
        <result column="createtime" property="createtime"/>
        <result column="note" property=note/>
        
        <!-- 配置映射的關聯的用戶信息 -->
        <!-- association:用于映射關聯查詢單個對象的信息
        property:要將關聯查詢的用戶信息映射到Orders中哪個屬性
         -->
        <association property="user"  javaType="cn.itcast.mybatis.po.User">
            <!-- id:關聯查詢用戶的唯 一標識
            column:指定唯 一標識用戶信息的列
            javaType:映射到user的哪個屬性
             -->
            <id column="user_id" property="id"/>
            <result column="username" property="username"/>
            <result column="sex" property="sex"/>
            <result column="address" property="address"/>
        
        </association>
    </resultMap>

需要Orders類中添加user屬性,也許重新建一個實體

order

mapper sql,resultMap為上面定義的resultMap的id

mapper.png

最后調用controller查詢即可

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容