【mybatis映射失败导致返回结果为null的问题】

问题描述

在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不熟悉,导致的错误。不过解决了错误也是一种很大的提升。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值