项目场景:

vue+springboot+mybatis+mysql前后端分离信息管理系统


问题描述

发现重复向数据库添加数据,而我限制了添加条件,于是很不解。最后发现是查询语句出错,返回值为null,导致限制条件未生效......在此之前我把前后端代码翻了个遍都没找到错误.....

所以一定要多调试!调试玩不转的,你至少该在一些关键位置用输出看看信息,否则你连错都不知道怎么错的,血泪啊!

发现是查询出错,我首先看了看sql语句是不是出错了,但由于太简单,很明显没有错误。于是就盯上了数据库编码格式问题,想着是不是查询条件是中文的原因所以数据库出错了,因为刚好昨天被坑过,可这次却不是。

于是浪费很多时间后,我再一次把目光转回了代码,可代码也很简单啊,所以我一直认为是查询条件是中文导致的,所以尝试了个各种办法,包括不限于改数据库配置文件,修改项目的application文件,把&{}换成#{}让其不预编译,反正网上关于传中文出问题的解决方法都试完了,哪怕有些文件看起来没错我都要改一下,看是不是拼写错误。。。

最后终于发现根本问题出在驼峰式的字段查询返回值全为空,而那张表我有好几个驼峰字段,这一波啊是mybatis给了我一计重重的铁拳,让你丫的不学无术,以前我是一点都没在意过mybatis的问题下意识把它当成了sprintboot的一部分,还是用的太少了......

所以如果你也出现了mybatis查询返回为空的情况,其他各方面都没问题,又定义了驼峰字段,大概就是跟我一样摔坑里了,解决方案:是:

#springboot项目 配置文件加
mybatis:
  configuration:
    map-underscore-to-camel-case: true

#不是springboot项目 在mybatis配置文件中加入
<setting name="mapuUnderscoreToCamelCase" value="true"/>
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐