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リストを含めます。