JAVA运行报错Parameter index out of range (2 > number of parameters, which is 1).(已解决)

今天在查询sql的时候遇到这个问题 Parameter index out of range (2 > number of parameters, which is 1).

出现问题的截图:
在这里插入图片描述

下面是我写sql的地方:

    <select id="getProjectRiskAssessesSubmitList"
            resultType="com.crecg.smart.precaution.risk.model.domain.RiskAssess">
--         SELECT
--             pra.*
--         FROM `pre_risk_assess` pra
--                  JOIN `pre_todo_sub` pts ON pra.todo_sub_id = pts.id
--                  JOIN `pre_todo` pt ON pt.todo_sub_id = pts.id
--                  JOIN `pre_danger_plan` pdp ON pra.plan_id = pdp.id
--                  JOIN `pre_project` pp ON FIND_IN_SET(pp.id, pdp.project_ids) > 0
--         WHERE pt.`status` = 1
--           AND pra.status = 3
--           AND pp.id = #{projectId}
--           AND pt.start_date = (
--             SELECT MAX(t2.start_date) AS max_start
--             FROM `pre_todo` t2
--             WHERE t2.plan_id = pdp.id and t2.`status` = 1
--         )
--         ORDER BY pra.id

        SELECT pra.id,pra.risk_grade
        FROM pre_risk_assess pra
        JOIN pre_todo_sub pts ON pra.todo_sub_id = pts.id
        JOIN pre_project pp ON pts.project_id = pp.id
        WHERE pp.id = #{projectId}
          AND pts.status = 1
          AND pra.status = 3
          AND pts.operate_date = (
            SELECT MAX(pts2.operate_date) AS max_start
            FROM pre_todo_sub pts2
            WHERE pts2.plan_id = pra.plan_id
              and pts2.status = 1
        )
        ORDER BY pra.id
    </select>

出现错误的原因,上面我有注释一段原有的sql,sql里面包含一个#{projectId},没有注释的代码也有一个#{projectId}
MyBatis 尝试设置第 2 个参数,但是我入参只有一个,找不到对应的占位符,因为我有两个占位符,一个是正常的sql,一个是注释的sql

解决办法:
删除xml文件中注释的信息,即可解决这个问题,如下:

    <select id="getProjectRiskAssessesSubmitList"
            resultType="com.crecg.smart.precaution.risk.model.domain.RiskAssess">

        SELECT pra.id,pra.risk_grade
        FROM pre_risk_assess pra
        JOIN pre_todo_sub pts ON pra.todo_sub_id = pts.id
        JOIN pre_project pp ON pts.project_id = pp.id
        WHERE pp.id = #{projectId}
          AND pts.status = 1
          AND pra.status = 3
          AND pts.operate_date = (
            SELECT MAX(pts2.operate_date) AS max_start
            FROM pre_todo_sub pts2
            WHERE pts2.plan_id = pra.plan_id
              and pts2.status = 1
        )
        ORDER BY pra.id
    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值