mybatis 查询由多个表组成的字段用map接收
Sql:
<resultMap id="BaseResultProductivityPlanMap" *type="java.util.Map"*>
<result column="ITEM_NAME" jdbcType="NVARCHAR" property="itemName" />
<result column="PLAN_YEAR" jdbcType="NVARCHAR" property="planYear" />
<result column="GAS_CONS_SCALE" jdbcType="DOUBLE" property="gasConsScale" />
<result column="CY_DRILL_NUM" jdbcType="INTEGER" property="cyDrillNum" />
<result column="BY_DRILL_NUM" jdbcType="INTEGER" property="byDrillNum" />
<result column="CY_END_DRILL_NUM" jdbcType="INTEGER" property="cyEndDrillNum" />
<result column="BY_END_DRILL_NUM" jdbcType="INTEGER" property="byEndDrillNum" />
<result column="CY_FOOTAGE" jdbcType="DOUBLE" property="cyFootAge" />
<result column="BY_FOOTAGE" jdbcType="DOUBLE" property="byFootAge" />
<result column="CY_END_TEST_OIL" jdbcType="INTEGER" property="cyEndTestOil" />
<result column="BY_END_TEST_OIL" jdbcType="INTEGER" property="byEndTestOil" />
<result column="CY_INDUSTRY_WELL" jdbcType="INTEGER" property="cyIndustryWell" />
<result column="BY_INDUSTRY_WELL" jdbcType="INTEGER" property="byIndustryWell" />
<result column="REMARKS" jdbcType="NVARCHAR" property="remarks" />
</resultMap>
<select id="queryBranchConstructionOrPlanYearOrPlanName" resultMap="BaseResultProductivityPlanMap">
select C.ITEM_NAME,
Y.PLAN_YEAR,
SUM(X.GAS_CONS_SCALE)GAS_CONS_SCALE,
SUM(X.CY_DRILL_NUM)CY_DRILL_NUM ,
SUM(X.BY_DRILL_NUM)BY_DRILL_NUM,
SUM(X.CY_END_DRILL_NUM)CY_END_DRILL_NUM,
SUM(X.BY_END_DRILL_NUM)BY_END_DRILL_NUM,
SUM(X.CY_FOOTAGE)CY_FOOTAGE,
SUM(X.BY_FOOTAGE)BY_FOOTAGE,
SUM(X.CY_END_TEST_OIL)CY_END_TEST_OIL,
SUM(X.BY_END_TEST_OIL)BY_END_TEST_OIL,
SUM(X.CY_INDUSTRY_WELL)CY_INDUSTRY_WELL,
SUM(X.BY_INDUSTRY_WELL)BY_INDUSTRY_WELL,
X.REMARKS
from PRODUCTION.CD_ITEM C
LEFT JOIN PRODUCTION.PC_PLAN_ITEM M ON C.ITEM_ID=M.ITEM_ID
LEFT JOIN PRODUCTION.PC_YEAR_PLAN Y ON Y.YEAR_PLAN_ID=M.YEAR_PLAN_ID
LEFT JOIN PRODUCTION.PC_PRODUCTIVITY_PLAN_INDEX X ON X.ITEM_ID=C.ITEM_ID
WHERE C.ITEM_CLASS='2008' AND Y.PLAN_TYPE='2'
<if test="planYear !=null and planYear !=''">
AND PLAN_YEAR=#{planYear,jdbcType=VARCHAR}
</if>
GROUP BY C.ITEM_NAME,C.ITEM_YEAR,Y.PLAN_YEAR,X.REMARKS ORDER BY C.ITEM_NAME
</select>
**这块不要把它放到 where 前面会出问题**
<if test="planYear !=null and planYear !=''">
AND PLAN_YEAR=#{planYear,jdbcType=VARCHAR}
</if>
后台:
@Override
public ApiResult queryBranchConstructionOrPlanYearOrPlanName(String planYear) {
List<Map<Object,Object>>list= annualDeploymentMapper.queryBranchConstructionOrPlanYearOrPlanName(planYear);
return ApiResult.ofFailureResultMsg(list,"分公司产建计划查询成功",true);
}
List<Map<Object, Object>> queryBranchConstructionOrPlanYearOrPlanName(@Param("planYear") String planYear);