广告
返回顶部
首页 > 资讯 > 后端开发 > Python >mybatis 解决将数值0识别成空字符串的问题
  • 572
分享到

mybatis 解决将数值0识别成空字符串的问题

2024-04-02 19:04:59 572人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

今天遇到一个问题 我在用java的BigDecimal对象时,值是0.00000;该对象不是空的,是new出来的,我需要将该值插入数据库,数据库对于该值的接收字段类型是decimal

今天遇到一个问题

我在用java的BigDecimal对象时,值是0.00000;该对象不是空的,是new出来的,我需要将该值插入数据库数据库对于该值的接收字段类型是decimal。

我使用的mybatis。mybatis中的语句大致如下:


       UPDATE user_consumption 
  <trim prefix="SET" suffixOverrides=",">
            <if test="totalConsumption!=null" and totalConsumption!=''>
            total_consumption = #{totalConsumption},
            </if>
  </trim>  
        WHERE 
         id = #{id} and state = 'A'

其中totalConsumption就是java对象中类型为BigDecimal的对象,该变量映射到数据库表中的字段是total_consumption。但是你mybatis的xml文件中的语句如上述缩写,你需要设的值是0.00000,此时运行的时候你会发现报错,报错如下:

报错指出sql语句是这样子的,没有需要set的值


UPDATE user_consumption   WHERE id = #{id} and state = 'A'

从报错的语句可以看出,Mybatis认为totalConsumption这个量是null或者空字符串,但是totalConsumption明明是New出来的,不会是空的,那么唯一的可能就是mybatis将值为0.00000的totalConsumption识别为空字符串了,事实也确实如此,改天我会看看源代码,再贴到这边,以后记住mybatis 会将数值0识别成空字符串。

解决方式:

对于上述的问题的修改就是将判断空字符串的判断语句去掉即可。但是这并不是通用解决方案,因为我问题中的BigDecimal是需要New出来的,就算不是New出来的,也不会在进入mybatis之前变成空字符串,所以我可以直接把空字串去掉,


        UPDATE user_consumption 
  <trim prefix="SET" suffixOverrides=",">
            <if test="totalConsumption!=null">
            total_consumption = #{totalConsumption},
            </if>
  </trim>  
        WHERE 
         id = #{id} and state = 'A'

但是对于那些不需要new的数据类型,就比如你Java中是Integer,此时你最好把类型换成string,就不会出现这种情况了。

mybatis 获取数据为null(注解方式)

在使用 muybatis 获取 Mysql 的日期数据的时候,其中一个数据一直为空,而其他在同一实体中的数据却可以正常获取。

此种情况很可能是 mysql 中的数据与 java 实体类数据映射失败的原因,使用注解开发时,要求实体类数据中属性必须和 mysql 中的属性名一致(除非你进行映射转换的配置),可以忽略大小写。

这次的问题就在于其中一个属性少写了一个字母,导致和mysql 那边匹配不上

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

--结束END--

本文标题: mybatis 解决将数值0识别成空字符串的问题

本文链接: https://www.lsjlt.com/news/128223.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mybatis 解决将数值0识别成空字符串的问题
    今天遇到一个问题 我在用java的BigDecimal对象时,值是0.00000;该对象不是空的,是new出来的,我需要将该值插入数据库,数据库对于该值的接收字段类型是decimal...
    99+
    2022-11-12
  • vue前端传空值、空字符串的问题及解决
    目录vue前端传空值及空字符串问题vue空值报错问题vue前端传空值及空字符串问题 在与后端调试接口时,经常接口里的参数会有空值,如果每次都要后端写判断,代码容易冗余。  ...
    99+
    2022-11-13
  • mybatis if test不为空字符串且不为null的问题怎么解决
    这篇文章主要介绍“mybatis if test不为空字符串且不为null的问题怎么解决”,在日常操作中,相信很多人在mybatis if test不为空字符串且不为null的问题怎么解决问题上存在疑...
    99+
    2023-06-29
  • 如何解决Angularjs中双向绑定时字符串的转换成数字类型的问题
    小编给大家分享一下如何解决Angularjs中双向绑定时字符串的转换成数字类型的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作