软件编程
位置:首页>> 软件编程>> java编程>> mybatis if test判断BigDecimal遇到的坑及解决

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

作者:卡卡的喵  发布时间:2022-12-06 09:44:24 

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

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

源码是这样的

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

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

但在这里会报错。

所以小改一下! 

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

就解决了!

来源:https://blog.csdn.net/kouwoo/article/details/121979821

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com