MyBatis关联查询,一对多关联查询

it2022-05-05  62

实体关系图,一个国家对应多个城市

一对多关联查询可用三种方式实现:

单步查询,利用collection标签为级联属性赋值;分步查询: 利用association标签进行分步查询;利用collection标签进行分步查询

单步查询

利用collection标签实现一对多单步关联查询:

指定进行关联查询的Java Bean字段,即collection标签的 property 属性;指定集合中的Java Bean类型,即collection标签的 ofType属性;

 实体类

public class CountryPlus { Long id; String name; Date lastUpdate; List<City> cityList; }

 

public class City { Long id; String name; Long countryId; Date lastUpdate; }

 

查询标签

<select id="selectCountryPlusById" resultMap="countryPlusResultMap"> select country.country_id as country_id, country, country.last_update as last_update, city_id, city, city.country_id as city_country_id, city.last_update as city_last_update from country left join city on country.country_id = city.country_id where country.country_id=#{id} </select>

 

resultMap

<resultMap id="countryPlusResultMap" type="canger.study.chapter04.bean.CountryPlus"> <id column="country_id" property="id"/> <result column="country" property="name"/> <result column="last_update" property="lastUpdate"/> <collection property="cityList" ofType="canger.study.chapter04.bean.City"> <id column="city_id" property="id"/> <result column="city" property="name"/> <result column="city_country_id" property="countryId"/> <result column="city_last_update" property="lastUpdate"/> </collection> </resultMap>

 分步查询

利用collection标签进行分步查询

指定collection标签的 property 属性;通过select属性指定下一步查询使用的 statement id;通过column属性向下一步查询传递参数,传递多个参数的方法见MyBatis关联查询,一对一关联查询中的分步查询;

select标签

<select id="selectCountryPlusByIdStep" resultMap="countryPlusResultMapStep"> select * from country where country_id=#{id} </select>

resultMap标签

<resultMap id="countryPlusResultMapStep" type="canger.study.chapter04.bean.CountryPlus"> <id column="country_id" property="id"/> <result column="country" property="name"/> <result column="last_update" property="lastUpdate"/> <collection property="cityList" select="canger.study.chapter04.mapper.CityMapper.selectCityByCountryId" column="country_id"> </collection> </resultMap>

利用association标签进行分步查询

  和使用collection标签的方式相同

 

转载于:https://www.cnblogs.com/canger/p/9997422.html

相关资源:Mybatis实现关联查询一对一和一对多实现

最新回复(0)