springboot框架的作用基于SpringBoot的电⼦商城项⽬开发(5)遇到的问题
在项⽬中遇到的问题:
在写订单模块其中的新建订单的功能时,测试遇到问题,postman报错如下:
返回控制台报错如下
显⽰为数据库的语句错误导致的传参失败,⽽且我发现之前的购物车中的数据已经删除,前⾯的代码已经跑通了,这显然不是整体未连接到数据库的问题,且具体⽅法为OrderMapper下的InsertSelective⽅法,该⽅法为mybatis-generator插件⾃动⽣成的新增⽅法,在前⼏个模块中也经常使⽤到,并未发现异常,由于是传参问题,我优先对⽐了传⼊参数格式的正确性。
个⼈具体解决调试⽅法如下:
1 、由于控制台给出的错误提⽰为sql语句的错误,由于是⾃动⽣成的代码,且在前⼏个模块中InsertSelective都使⽤正常,未出现类似错误,所以我看了下代码和数据,是不是因为属性名或者⼤⼩写写错,查看后⽆果,与其他功能都⼀致,并未发现异常,测试后还是报
错;
2 后来我检验了是不是传⼊的order数据格式错误或数据未传⼊order对象导致的传⼊数据库错误,所以在运⾏该⽅法前设⽴断点进⾏Debug测试如图:
通过postman跑起来后查看断点前order对象的情况如下:
并不存在order对象传参失败导致空值等情况,下⼀步之后还是会弹出错误,尝试下⼀种⽅法。
3 既然传参没错,⽣成的SQL语句出错我也排查过了,索性我⾃⼰重写了 insertOrder⽅法作为注⼊数
据的⽅法如下:
结果⾮常amazing,还是报错,且控制台返回新⽅法中sql语法错误。
4 ⾃写的⽅法也失败了,我受挫万分,想了很久,突然想到我可以尝试传⼊⼀个⼀个常量去尝试是不是连常量都⽆法传⼊数据库,以排除是我数据的问题,⽐如传⼊id为{3}的⼀条信息,查看数据库中其他属性并未设为⾮空值,所以我实践了:
结果依旧是爆这短短的sql语句错误,我开始怀疑是不是sql语句没学好,这都写错,查询了写百度,我sql语句在idea中是没错的呀。
5之后突然想到之前百度看到有⼀个⼤⽜写的博客,如果sql报错可以写⼀段sql放⼊数据库可视化⼯具中跑下试试, 我就也去试了⼀下
结果还是报错,突然想到因为idea的作⽤下,纯正的sql语句和在mybatis中写的并不相同,需要在表名前后加上单引号,如’order’;尝试过后果然传⼊成功
最后解决⽅法:
经过传⼊数据库中成功也在表中看到对应数据,我有了头绪,既然在navicat中能跑通,我同样的语句mybatis中尝试⼀下,我重写了insertOrder⽅法,把能跑通同样的sql语句放⼊,更改id防⽌重复,结果能加⼊数据,postman返回成功,随后我以同样的格式加⼊⼀个个定值数据进去,可以成功,随后我更换了定值成order对象的属性,结果还是能写进去,⾄此原因到了,竟是表名未加单引号,我尝试了以前的⾃动⽣成的insertSeletive⽅法加上单引号,竟然成功了,就是缺少⼩⼩的单引号,虽然问题解决了,但我还是费解,同样的⽅法已经实现过很多次了,在mappper的配置⽂件中不论是⾃动⽣成的⽅法还是我后来⾃⼰写的⽅法,表名都⽆需加上单引号,都是mybatis⾃动识别表名。
总结:虽然问题已解决,但花费了⼤量时间,可能是⾃⼰学的懂的不够多,且未遇到过类似的情况缺少经验,虽然到最后还是没有理解透彻问题的缘由,知道错在哪但不知道为什么错,但吃⼀堑长⼀智,以后遇到类似的情况能有⼀个这样的经历,在⾃⼰的项⽬中发现,总归⽐在以后的⼯作中遇到要好得多,可能在今后的学习中就能发现这次是为什么错了,收拾⼼情继续完成这个项⽬吧,虽然是次错误,花费了挺多时间,但还是收获颇多,明⽩了⽤插件、框架、⼯具等便利的⽅法时,还是需要懂原始代码才能在⼯具出现差异时⾯对bug从容不迫,也不能因为经常使⽤⼯具忘记以前的知识,还是需要重新温故,才能在技术的道路上越⾛越远。
ps:以上仅为个⼈类似⽇记形式对项⽬开发的⼀个记录,个⼈也是未毕业的学⽣,技术学的不深,如有技术或者⾔语上的错误,还请海涵,还望多多指点出错误,谢谢!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。