mybatis 使用collection 标签实现级联查询
1、业务需求 例如查询省市县 分别在不同的三个表中存储 省表,市表,县表
根据省的id 查询一个对象 包含省市县的内容
分别写三个VO对象 省Vo(包含市Volist) 市Vo(包含县VoList) 县Vo
Mpper文件:
<resultMap id=“shengMap” type=“shengVo”>
<id column="id" jdbcType="INTEGER" property="id" />
<result column="sheng_code" jdbcType="VARCHAR" property="shengCode" />
<result column="sheng_name" jdbcType="VARCHAR" property="shengName" />
<collection property="shiVoList" ofType="shiVo" select="selectShiByShengID" column="id"/>
</resultMap>
<resultMap id=“shiMap” type=“shiVo”>
<id column="id" jdbcType="INTEGER" property="id" />
<result column="sheng_id" jdbcType="INTEGER" property="shengId" />
<result column="shi_code" jdbcType="VARCHAR" property="shiCode" />
<result column="shi_name" jdbcType="VARCHAR" property="shiName" />
<collection property="xianVoList" ofType="shiVo" select="selectXianByShiID" column="id"/>
</resultMap>
<resultMap id=“xianMap” type=“xianVo”>
<id column="id" jdbcType="INTEGER" property="id" />
<result column="shiId" jdbcType="INTEGER" property="shiId" />
<result column="xian_code" jdbcType="VARCHAR" property="xianCode" />
<result column="xian_name" jdbcType="VARCHAR" property="xianName" />
</resultMap>
<sql id="sheng_column">
id, sheng_code,sheng_name
</sql>
<sql id="shi_column">
id, sheng_id,shi_code,shi_name
</sql>
<sql id="xian_column">
id, shi_id,xian_code,xian_name
</sql>
<select id="selectShengList" resultMap="shengMap" ParameterType="int">
select
<include refid="sheng_column"/>
from 省表
where id=#{id}
</select>
<select id="selectShiByShengID" resultMap="shiMap" ParameterType="int">
select
<include refid="shi_column"/>
from 市表
where sheng_id=#{id}
</select>
<select id="selectXianByShiID" resultMap="shiMap" ParameterType="int">
select
<include refid="xian_column"/>
from 县表
where shi_id=#{id}
</select>