java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > mybatis if test判断BigDecimal的坑

mybatis if test判断BigDecimal遇到的坑及解决

作者:卡卡的喵

这篇文章主要介绍了mybatis if test判断BigDecimal遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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”查询语句是没问题的)

但在这里会报错。

所以小改一下! 

就解决了!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文