解决mybatis查询结果一直为null,但是数据库表查询却有结果

写毕设后台系统的时候遇见一个难题,就是在xml文件里面编写的sql查询语句,写好dao和service之后进行测试,可是一直查询的结果都是为空,底层sql语句没有问题,业务逻辑和方法调用也完全没有问题,但是在数据库中利用表查询用相同的sql语句可以把数据都查出来。昨天找了整整一个下午都还没有头绪,今天终于把它解决了,给大家分享一下。

1.数据表结构如下图所示:
在这里插入图片描述
2.xml文件方法代码如下图所示:在这里插入图片描述
3.测试类如下图所示:在这里插入图片描述
4.运行测试类后,显示结果如下图所示:
在这里插入图片描述
数据查询一直为空,但是确实查到了有十条数据,但是为什么显示不出来数据呢?是xml文件里面的底层代码出现问题了吗???

5.于是我又用相同的sql语句到mysql中进行表查询,查询结果如下图所示:
在这里插入图片描述
但是数据库里面就能查询到数据,这就很奇怪了!后来我终于知道了原因,原来是返回值类型resultType和resultMap的区别!!!
对应的实体类属性和表中字段不一致,需要利用resultMap来添加映射,把数据库表属性和实体类字段进行绑定。
6.实体类属性如下图所示:
在这里插入图片描述
7.用resultMap进行属性与字段绑定,如下图所示:
在这里插入图片描述
8.最后再改变xml文件该方法的返回类型,名称与绑定的id名称相同,如下图所示:
在这里插入图片描述
9.在运行测试类,发现已经能够得到自己想要的数据,如下图所示:在这里插入图片描述
总结:只有当数据库表中的字段名称与实体类中的属性名称完全相同,才能直接使用resultType返回类型,后面跟上该实体类的名称。否则一定需要用resultMap进行属性映射,否则得到的数据一直没有匹配的实体类与之对应,返回的结果也自然为空!!!

  • 18
    点赞
  • 26
    收藏
  • 打赏
    打赏
  • 6
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论 6

打赏作者

Keson Z

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值