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格式有问题)

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

源码是这样的

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

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

但在这里会报错。

所以小改一下! 

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

就解决了!

总结

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

原文地址:https://blog.csdn.net/kouwoo/article/details/121979821

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-23
  • 2022-12-23
  • 2021-08-10
  • 2022-12-23
  • 2023-03-30
猜你喜欢
  • 2023-03-31
  • 2021-08-03
  • 2022-12-23
  • 2021-10-15
  • 2022-03-06
相关资源
相似解决方案