mybatis if test判断BigDecimal遇到的坑

    <update id="test" parameterType="cn.test.Demo">
        update test
        <trim prefix="set" suffixOverrides=",">
            <if test="bigDecimalValue != null and bigDecimalValue != ''">
                bigDecimal_value = #{bigDecimalValue},
            </if>
        </trim>
        WHERE
            id = #{id}
    </update>

以上语句变量bigDecimalValue是BigDecimal类型的,传入的值是0,

但打印出来的语句是

update test  WHERE id = ? 

竟然没有set变量,导致一直报sql错误的异常。

后来才发现,如果要判断BigDecimal类型是否为空,只要判断是否为null就可以了,不要判断是否为空字符串,系统会自动把0当成了空字符串。

造成这样错误的原因应该是复制了之前的代码,而之前的代码是判断字符类型是否为空。

mybatis if test 报错,无效

除却.toString能够对空字符和数值操作,来避免类型对比错误问题外

还可能在语法上报错,

先上图(这里说SQL格式有问题)

源码是这样的

(正常在SQL工具中,“SELECT * FROM `product` where”查询语句是没问题的)

但在这里会报错。

所以小改一下! 

就解决了!

总结