例子:
<resultMap id="HoResultMap" type="com.fuzi.Ho">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="cityName" jdbcType="VARCHAR" property="cityName" />
<result column="cityProvincialName" jdbcType="VARCHAR" property="cityProvincialName" />
<collection property="hoAreaList" ofType="com.fuzi.HoArea">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="tradingAreaName" jdbcType="VARCHAR" property="tradingAreaName" />
<result column="hotSpotsId" jdbcType="BIGINT" property="hotSpotsId" />
<collection property="hoAddList" ofType="com.fuzi.HoAdd">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="created" jdbcType="TIMESTAMP" property="created" />
<result column="addressName" jdbcType="VARCHAR" property="addressName" />
<result column="addressDetailName" jdbcType="VARCHAR" property="addressDetailName" />
<result column="tradingAreaId" jdbcType="BIGINT" property="tradingAreaId" />
</collection>
</collection>
</resultMap>
以上就会出现只返回一条数据的情况,产生的原因试出现了多个重复的id,mybatis试根据别名来查询的,所以将上面的id号分别用不同的名字来表示即可,同时再查询语句中指定别名如:
<resultMap id="HoResultMap" type="com.fuzi.Ho">
<id column="Ho_id" jdbcType="BIGINT" property="id" />
<result column="cityName" jdbcType="VARCHAR" property="cityName" />
<result column="cityProvincialName" jdbcType="VARCHAR" property="cityProvincialName" />
<collection property="hoAreaList" ofType="com.fuzi.HoArea">
<id column="hoArea_id" jdbcType="BIGINT" property="id" />
<result column="tradingAreaName" jdbcType="VARCHAR" property="tradingAreaName" />
<result column="hotSpotsId" jdbcType="BIGINT" property="hotSpotsId" />
<collection property="hoAddList" ofType="com.fuzi.HoAdd">
<id column="hoAdd_id" jdbcType="BIGINT" property="id" />
<result column="created" jdbcType="TIMESTAMP" property="created" />
<result column="addressName" jdbcType="VARCHAR" property="addressName" />
<result column="addressDetailName" jdbcType="VARCHAR" property="addressDetailName" />
<result column="tradingAreaId" jdbcType="BIGINT" property="tradingAreaId" />
</collection>
</collection>
</resultMap>
//查询语句
select
ho.id ho_id,hotSpots.cityName,hotSpots.cityLat,ho.cityLng,ho.cityMunicipalName,
hoArea.id hoArea_id,hoArea.tradingAreaName,hoAdd.id hoAdd_id
from
ho
right join
hoArea
on
ho.id = hoArea.hotSpotsId
right join
hoAdd
on
hoArea.id = hoAdd.tradingAreaId