问题描述:
在开发过程中由于对字段的进行了修改(由原来的只支持单个值输入,且是字符串型的;变成可支持字符串1,2或者1,3 2,3 等组合),导致页面无法正常加载。发现原因是下面这段Mybatis无法实现需要的功能。
部分代码如下:
<!-- 使用字符串切割成字符串数组,但是报错-->
<if test="type!= null">and o.type in
<foreach item="item" index="index" collection="type.split(',')" open="(" separator="," close=")" >
#{item}
</foreach>
</if>
报错日志如下
Caused by: org.apache.ibatis.exceptions.PersistenceException:
Error querying database. Cause: java.lang.NumberFormatException: For input string: “1,2”
Cause: java.lang.NumberFormatException: For input string: “1,2”
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
at org.apache.ibatis.session.

在Mybatis中遇到字段值从'1,2'这样的字符串变为多值组合后,导致页面加载异常。报错源于将字符串转换为数值类型时抛出NumberFormatException。通过浏览器F12和debug调试发现,Mybatis接收到的是字符串型的'1,2',尝试split分割无效,因数据库字段为int类型。解决方案是在传递到Mapper前将字符串转换为int[]数组。"
137331031,1293748,Spring多线程事务一致性保证,"['Spring框架', 'Java并发', '数据库事务']
最低0.47元/天 解锁文章
2439

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



