MyBatisでは親子関係のテーブルのレコードをマッピングによって取得することができます。
POJO
Javaでは以下のように子テーブルをネストしたPOJOを用意しておきます。
public class MainJoho implements Serializable {
private String mainId;
private String mainName;
private List<SubJoho> subJohoList;
}
public class SubJoho {
private String subId;
private String subName;
private String subType;
}
Mapper
Mapperではcollectionを使ってネストした子テーブルをマッピングできるようにします。
<resultMap id="MainJohoResultMap" type="jp.co.hoge.pojo.MainJoho">
<result column="MAIN_ID" jdbcType="VARCHAR" property="mainId" />
<result column="MAIN_NAME" jdbcType="VARCHAR" property="mainName" />
<collection ofType="jp.co.hoge.pojo.SubJoho" property="subJohoList">
<result column="SUB_ID" property="subId" />
<result column="SUB_NAME" property="subName" />
<result column="SUB_TYPE" property="subType" />
</collection>
</resultMap>
<select id="selectList" resultMap="MainJohoResultMap">
SELECT
M_MAIN.MAIN_ID
, MAIN_NAME
, SUB_ID
, SUB_NAME
, SUB_TYPE
FROM M_MAIN
LEFT JOIN M_SUB
ON M_MAIN.MAIN_ID = M_SUB.MAIN_ID
</select>