
今天在敲代码测试的时候突然出现了cause: java.lang.numberformatexception: for input string:这样的错误,找了一个小时都没有找到,错误如下:
org.apache.ibatis.exceptions.PersistenceException:
### Error updating database. Cause: java.lang.NumberFormatException: For input string: "北京市昌平区"
### The error may exist in com/itheima/mapper/StoreMapper.xml
### The error may involve com.itheima.mapper.StoreMapper.updateId
### The error occurred while executing an update
### Cause: java.lang.NumberFormatException: For input string: "北京市昌平区"
结果后来同学帮我看代码发现,我配置文件写错了,本来是应该修改的值不为null而且不是空字符串,结果我写成非空格了。导致错误。但是又一个问题出现了,就是之前上课的时候我也是写的空格,为什么就可以呢?

于是我翻了之前上课时候的代码,发现我当时用来测试的数据是"123456",也就是双引号中写的是数字,但是很奇怪啊,不管是"123456"还是"北京市昌平区",这都应该是字符串啊,怎么会造成这样呢?底层代码对于我而言有点难找,然后我就查CSDN,终于找到一篇帖子。
地址:(5条消息) 报错解决:java.lang.NumberFormatException: For input string:“********”_欢乐的八爪鱼的博客-CSDN博客
这篇帖子是一个数据处理过滤的帖子,前辈在刨源码的时候发现是parseInt方法中会限定10位,

出于好奇,我也去试了试:
我直接试了10位数:
没有问题,可以执行。
接着我试了11位:

还是可以。
不管我试了多长。。。。
abc也不行,感觉不是ASCII码表的关系:

总之,我暂时没有找到为什么会出现这样的问题,明天问下老师吧,或者有哪位大佬可以解答一下吗?
解决方法就是:判断null和非空字符串,如图下:

在使用MyBatis更新数据库时遇到`java.lang.NumberFormatException: For input string: "北京市昌平区"`的错误。问题源于配置文件中的非空格设置,原本应为非null且非空字符串。虽然疑惑为何输入数字或字符串都会触发此异常,但通过查阅资料发现parseInt方法在处理字符串转整数时有长度限制。解决方案是对输入进行null和非空字符串的判断。

2303

被折叠的 条评论
为什么被折叠?



