在MyBatis中配置一对多关系,需要使用嵌套查询和嵌套结果映射。
首先,需要在Mapper XML文件中定义两个查询语句,一个用于查询主表信息,另一个用于查询从表信息。例如:
<!-- 查询主表信息 -->
<select id="selectMainTable" resultMap="MainTableResultMap">
SELECT *
FROM main_table
</select>
<!-- 查询从表信息 -->
<select id="selectSubTable" resultMap="SubTableResultMap">
SELECT *
FROM sub_table
WHERE main_table_id = #{mainTableId}
</select>
然后,需要定义两个ResultMap,分别用于映射主表和从表的结果集。例如:
<!-- 主表ResultMap -->
<resultMap id="MainTableResultMap" type="MainTable">
<id property="id" column="id" />
<result property="name" column="name" />
<!-- 定义从表的集合 -->
<collection property="subTables" ofType="SubTable" resultMap="SubTableResultMap" />
</resultMap>
<!-- 从表ResultMap -->
<resultMap id="SubTableResultMap" type="SubTable">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="mainTableId" column="main_table_id" />
</resultMap>
最后,在Mapper接口中定义方法,调用上述两个查询语句来实现一对多关系的查询。例如:
public interface MainTableMapper {
MainTable selectMainTable(int id);
}
在调用selectMainTable方法时,MyBatis会先执行查询主表信息的SQL语句,然后根据主表的ID值,执行查询从表信息的SQL语句,并将查询结果映射到主表对象中的从表集合属性中。
辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读: 如何优化代码以避免mybatis空指针异常