mybatis 查询由多个表组成的部分字段用map接收

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);

猜你喜欢

转载自blog.csdn.net/weixin_41987908/article/details/89458609