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>

posted @ 2021-09-24 16:52  韩小陌  阅读(404)  评论(0编辑  收藏  举报