问题描述
在springboot项目中进行登录操作,尽管account和pwd输入了正确的值,但依然返回登陆失败。
前端访问结果:
后端主要代码:
原因分析:
1. 首先判断 adminMapper.Login(account,pwd) 的返回值是否真的为null,输出返回结果。
控制台打印结果:
控制台打印的结果是null,说明可能是sql查询部分有问题导致查询结果为null。
2. 检查sql是否有问题。
在项目的yml文件中添加配置,使得控制台可以打印sql日志。
mybatis: #用于mybatis在控制台打印sql日志 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl map-underscore-to-camel-case: true
添加好配置后重新运行项目,尝试登录,并观察控制台
通过控制台可以观察到sql的日志现实查询结果有1条数据,但打印的结果依然为null。
3. sql部分没问题,那么可能是查询结果映射到实体类的过程出了问题,导致没有映射成功。
检查mapper.xml文件中的映射:
实体类:
数据库:
我感觉我写的没问题,但是运行结果说有问题,于是我选择百度,百度说是 resultType 的实体内中属性的名字要和数据库字段名一致才行。
【困惑来了】可是在之前的SSM框架中我也是这样写,使用resultType,依然可以映射。
证据如下:
那行吧,虽然疑惑,但是先搁置疑惑,那我先用 resultMap 让其对应,在运行看看结果。
使用resultMap后查看运行结果
前端:
控制台:
离谱,没想到还真行,结果不再为null。
解决方案:
请教大佬,解决疑惑
原来在之前SSM框架中,在写mybatis配置文件时,开启了驼峰命名规则。
所以在SSM的项目中使用resultType 映射没问题。
但是在Springboot项目中我并没有设置开启驼峰,所以使用resultType 映射结果为null。
在配置文件中加入开启驼峰:
mybatis: configuration: #开题驼峰命名 map-underscore-to-camel-case: true
开启后再设置回resultType
运行查看结果:
问题解决...
总结:
其实不是什么大问题,只是单纯对mybatis不熟悉,导致的错误。不过解决了错误也是一种很大的提升。