Mybatisで内部結合を実装

Mybatisで内部結合を実装

内部結合のMyBatis例

以下は、testUserテーブルとtestOrderテーブルを内部結合するMyBatisの例です。

SQLマッピング(XML)
<select id="selectUserOrders" resultMap="UserOrderResultMap">
    SELECT 
        u.id as userId,
        u.name as userName,
        o.id as orderId,
        o.product_name as productName
    FROM 
        testUser u
    INNER JOIN 
        testOrder o 
    ON 
        u.id = o.user_id
    WHERE 
        u.id = #{userId}
</select>
リザルトマップ
<resultMap id="UserOrderResultMap" type="testUser">
    <id property="id" column="userId" />
    <result property="name" column="userName" />
    <collection property="orders" ofType="testOrder">
        <id property="id" column="orderId" />
        <result property="productName" column="productName" />
    </collection>
</resultMap>
testUserクラス
public class testUser {
    private int id;
    private String name;
    private List<testOrder> orders;

    // getters and setters
}
testOrderクラス
public class testOrder {
    private int id;
    private String productName;

    // getters and setters
}

説明

  • select要素では、testUserとtestOrderを内部結合して、指定されたユーザーIDに基づいてデータを取得します。
  • resultMapは、結果をtestUserオブジェクトにマッピングし、関連するtestOrderリストを含めます。