java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corres

MyBatis-plus动态查询

<select id="getUnTaskSituation" resultMap="BaseResultMap">
        SELECT
        <include refid="Base_Column_List"/>
        FROM finance_model_son_detail AS t LEFT JOIN finance_model_detail AS fmd ON t.model_id = fmd.id
        WHERE t.is_del=0 AND fmd.active_close=0 AND fmd.is_del=0
        <if test="null!=query.executeCodes">
            AND t.manager_code in
            <foreach item="i" index="index" collection="query.executeCodes" open="(" separator="," close=")">
                #{i}
            </foreach>
        </if>
        <if test=" null != query.managerCodes and query.managerCodes.length > 0">
            AND fmd.manager_code in
            <foreach item="i" index="index" collection="query.managerCodes" open="(" separator="," close=")">
                #{i}
            </foreach>
        </if>
        <if test="query.startTime!= null and query.startTime!= ''">
            AND t.create_time >= CONCAT(#{query.startTime},' 00:00:00')
        </if>
    </select>

其中query.executeCodes是一个String数组,判断条件不够充足,从 <if test="null!=query.executeCodes">改为<if test=" null != query.managerCodes and query.managerCodes.length > 0">
让我一顿好找。

还有一次,是

<select id="getUnTaskSituation" resultMap="BaseResultMap">
        SELECT
        <include refid="Base_Column_List"/>
        FROM finance_model_son_detail AS t LEFT JOIN finance_model_detail AS fmd ON t.model_id = fmd.id
        //由于后面AND不一定全部存在,所以用1=1表示
        WHERE 1=1 AND fmd.is_del=0
        <if test="null!=query.executeCodes">
            AND t.manager_code in
            <foreach item="i" index="index" collection="query.executeCodes" open="(" separator="," close=")"> 
            #{i}
            </foreach>
        </if>
  </select>

还有一次是在MySQL语句习惯性地加了封号,实际上封号不应该有。
因此在MyBatis-plus种

//如果数组判空
<if test=" null != query.managerCodes and query.managerCodes.length > 0">`
//字符串判空:
<if test="query.startTime!= null and query.startTime!= ''">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值