动态查询 母表和子表的 一种方法

在人工对 子表进行 添加新字段 操作后,不需要改动后台代码的写法

mybatis层:

<select id="CSAlandTDlistPage" parameterType="page" resultType="pd"
useCache="false">
SELECT
   b.LandTypeID,
   a.LandID,
  b.LandTypeName,
  a.LandName,
  a.StatusID,
  c.StatusName,
  a.FarmID,
  a.LandCode
<if test="pd.ParaIDs !=null">
<foreach item="item" index="index" collection="pd.ParaIDs">
  ,( SELECT
  ParaValue
  FROM
  farm_land_landdetail
  WHERE
  LandID = a.LandID AND ParaID = '${item}'
  ) AS ${item}
</foreach>
</if>
  FROM farm_land_landdef a,
  farm_land_typedef b,
  farm_land_statusdef c
  WHERE
  a.LandType = b.LandTypeID
  and a.StatusID = c.StatusID
<if test = "pd.FarmID != null">
  AND
  a.FarmID = ${pd.FarmID} order by LandID
</if>
</select>

 

control层:

List<String> ParaIDs=csalandTDService.getlandParadef(pd);
pd.put("ParaIDs", ParaIDs);
System.out.println("pd="+pd);
page.setPd(pd);
List<PageData> CSAlandTDList=csalandTDService.CSAlandTDlistPage(page);

获取所有子表的字段:

<select id="findAllParaID" parameterType="pd" resultType="String"
useCache="false">
SELECT
paraID
from
farm_land_paradef
</select>

原文地址:https://www.cnblogs.com/jiangyi666/p/6221563.html