MyBatisでの1対1のマッピング関係の実装方法は何ですか?
MyBatisでの一対一のマッピング関係は、MyBatisのマッパーファイルでタグを使用して定義することができます。以下は例です:
- 2つのエンティティクラスを作成し、1つはメインエンティティクラスであり、もう1つは関連エンティティクラスです。
public class MainEntity {
private Long id;
private String name;
private SubEntity subEntity;
// getters and setters
}
public class SubEntity {
private Long id;
private String subName;
// getters and setters
}
- マッパーファイルを作成し、一対一のマッピング関係を定義するためのresultMapを作成してください。
<!-- MainEntityMapper.xml -->
<mapper namespace="com.example.MainEntityMapper">
<resultMap id="MainEntityResultMap" type="com.example.MainEntity">
<id property="id" column="id"/>
<result property="name" column="name"/>
<association property="subEntity" column="sub_id" javaType="com.example.SubEntity">
<id property="id" column="sub_id"/>
<result property="subName" column="sub_name"/>
</association>
</resultMap>
<select id="selectMainEntityById" resultMap="MainEntityResultMap">
SELECT
m.id,
m.name,
s.id as sub_id,
s.sub_name
FROM
main_entity m
LEFT JOIN
sub_entity s
ON
m.sub_id = s.id
WHERE
m.id = #{id}
</select>
</mapper>
- Javaのインターフェースで検索メソッドを定義します。
public interface MainEntityMapper {
MainEntity selectMainEntityById(Long id);
}
- MyBatisの構成ファイルでマッパーを設定します。
<!-- mybatis-config.xml -->
<configuration>
<mappers>
<mapper resource="com/example/MainEntityMapper.xml"/>
</mappers>
</configuration>
- コード内でクエリメソッドを呼び出し、一対一のマッピング関係を取得します。
MainEntity mainEntity = mainEntityMapper.selectMainEntityById(1L);
System.out.println(mainEntity.getName());
System.out.println(mainEntity.getSubEntity().getSubName());
上記の手順により、一対一の対念関係を持つクエリ操作を実現することができます。