上面的图就是我出现的问题;
一开始很不理解,以为是前台传值给后台只能传String类型,而后台打包接收对应参数的类型是int所以会出现这种参数不匹配的问题;
但是后来一想,并不是啊。因为之前有一个类似的功能页面内容基本完全一样,参数也都正常传递过去了没跳这样的500,为什么这里过不去了呢?
为了验证,还在后台代码里加入了一堆打印输出:比如这样的
看到参数传到后台正常,证明不是传数据到后台的问题,那就找传数据到数据库的问题吧,就是mybatis的部分了;(我用的是SSM),最终找到症结在于sql语句,之前也查过,因为在Root cause里也有提示sql方面有问题,但是英文不好,看不懂,回去看语句也没感觉哪不合适;
最终原因是:
前面同样的类似页面用的SQL语句是:insert into table set values(#{xxx},#{xxx})
而这次用的SQL语句是:update table set yyy=’#{xxx}’,zzz=#{xxx},……
把#号改成美元符就正常了
即:update table set yyy=‘美元符{xxx}’,zzz=${xxx},……
我记得美元符是通过Statement处理的数据,#号是通过PreparedStatement处理的数据,所以用#号的时候参数传过去都是加了引号的就相当于String类型,而数据库中对应的是int类型,所以才会出现参数不匹配的情况;
本文仅用于给我这个英语不好的菜鸟提供一个纠错笔记,以免犯类似错误。如果有幸能帮助到别人,那就太意外了!
关于一个mybatis中出现的一个500的问题:Could not set parameters for mapping: ParameterMapping{property='zonggao',……
最新推荐文章于 2023-12-09 19:00:52 发布