我们已经准备好了,你呢?

2026我们与您携手共赢,为您的企业形象保驾护航!

一、引子

在项目执行过程中,我们遭遇了一个令人费解的情况:当我们尝试通过一个特定的更新接口进行操作时,发现一个要求非常特殊——只有当对象的一个属性“name”的值为空时,该接口才能成功执行更新操作;然而,一旦“name”属性非空,更新操作便无法完成。

在数据库中,我手动将"name"字段的值清除了,然而即便如此,问题依旧存在,这促使我着手深入探究问题的根本原因。

二、数据库结构

这里写图片描述

如图,其中name是可以为空的。

首先插入一条测试数据,SQL如下图所示

 insert into student values(null,"jianghuiwen",100);

然后更新为空

 update student set name="" where id = 103829; 

查询后,显示如图所示

这里写图片描述

三、客户端测试

客户端采用的是java的代码,代码如图:

这里写图片描述

显示结果是:空。

继续更新为null:

update student set name=null where id = 103829; 

这里写图片描述

继续运行测试,显示结果是:null。

四、接口问题

去寻找接口,发现接口写的是:

实际上,我们注意到接口仅进行了null的判断,但若将条件更改为空字符串,那么这两个值将截然不同。

因此,在处理业务逻辑时,务必高度关注MySQL数据库中的空值与空字符串,并在JAVA编程中对这两种情况进行明确的区分与判断。

五、小结

测试结果显示,在将Java对象存入数据库过程中,若某字段未设定值且未调用A.set()方法,所插入的将是NULL而非空值;而要实现空值效果,需通过A.set(“”)来设置,值得注意的是,在MySQL数据库中,null与NULL是等效的。

二维码
扫一扫在手机端查看

本文链接:https://by928.com/9685.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线