最近在重温mybatis, 但是在做练习的时候发现一个问题;

查询,简单的查询,返回之后发现结果中,只有id被映射了值,其他属性都是null; 很纳闷,为什么一个简单的测试会出现这种问题;

一开始以为是自己代码或者SQL写的有问题;结果都没有问题 SQL在数据库执行是有值的

ok,问题定位到了映射,

提前剧透 .是因为下划线和驼峰的原因,无法正确映射,详细解释看下面

查看xml,最开始是这样写的 ↓↓↓↓↓↓↓

1. 采用的resultType  原因就出现在这里      <!-- 查询关联角色 --><select id="selectRoles" resultType="com.zl.box.bootmybaits.model.Role" parameterType="int">select r.* from role r left join user_role u on r.ID = u.RID where u.UID= #{id}</select>

为何原因出现在resultType呢,  看下面实体类与数据库表结构

public class Role implements Serializable {/*** 编号*/  private Integer id;/*** 角色名称*/   private String roleName;/*** 角色描述*/private String roleDesc;....省略get/set方法
}

数据库中是采用下划线连接单词的,而实体类中是采用的驼峰规则;这就导致了 SQL 中r.*  明明返回了值 但是无法正确映射的问题;

所以以后遇到相同问题的小伙伴,采用resultMap吧,做一下映射关联,这样就可以解决问题了

解决方式如下:

--resultMap:<resultMap id="BaseResultMap" type="com.zl.box.bootmybaits.model.Role"><id column="ID" property="id" jdbcType="INTEGER"/><result column="ROLE_NAME" property="roleName" jdbcType="VARCHAR"/><result column="ROLE_DESC" property="roleDesc" jdbcType="VARCHAR"/></resultMap>--SQL <!-- 查询关联角色 --><select id="findRoleByUid" resultMap="BaseResultMap" parameterType="int">select r.* from role r left join user_role u on r.ID = u.RID where u.UID= #{uid}</select>

然后就OK了;

当然还有一种解决方式那就是,不要写成r.*,

select r.* from role

写成r.id id, r.role_name roleName, r.role_desc  roleDesc 即可

select r.ID id,r.ROLE_DESC roleDesc, r.ROLE_NAME roleName from role r

Ok  最终的检验成果: 都成功的返回了值

Mybatis 查询 返回值中只有id有值,其他都是null;相关推荐

  1. 查询一个表中所有id字段在另一个表中对应值的SQL语句怎么写?

    编辑器加载中... 查询一个表中所有id字段在另一个表中对应值的SQL语句怎么写?多表联结查询:select rbd.RBDID, rbd.ProductCode,p.ProductCnName,p. ...

  2. mybatis查询返回null解决方案

    mybatis查询返回null解决方案 参考文章: (1)mybatis查询返回null解决方案 (2)https://www.cnblogs.com/zipon/p/6361661.html 备忘一 ...

  3. oracle json 搜索,oracle 正则查询json返回报文中某个字段的值

    接口返回报文为json 格式,如下: {"body":{"businessinfo":{"c1rate":"25.00" ...

  4. mybatis查询返回map的问题

    文章目录 背景 1.mybatis只返回单个map 2.查询返回map的list 3.利用mybatis的@MapKey注解返回map 4.重写handler 背景 假设背景: 想获取某个省下各个市有 ...

  5. mybatis查询返回空,SQL数据库执行有数据!

    我的数据库为Oracle,可以插入,更新,但在在Mybatis中执行SQL查询返回的数据发现返回NULL,但是生成SQL放在数据库中查询是有数据的,并且SQL是正确的! 这是没有改动的XML: < ...

  6. MyBatis查询返回Map类型数据

    1.Mapper中SQL: <select id="getBaseMap" resultType="java.util.HashMap"> sele ...

  7. mybatis查询返回null的原因_可怕!你没看错,这次确实是纯手工实现一个MyBatis框架...

    目录 前言 JDBC MyBatis 源码分析 前置知识 原理分析 自己实现一个 MyBatis 框架 前言 MyBatis是一个非常优秀的持久层应用框架,目前几乎已经一统天下.既然是持久层框架,那么 ...

  8. php查询数据库表中的id个数,GitHub - xindong/easy-total: 一个可以对预先设定的sql语句进行实时数据统计并输出结果的服务...

    Easy Total 这是一个通过监听预先添加好的SQL统计查询语句,对汇入的数据进行实时统计处理后不间断的将统计结果导出的服务解决方案,它解决了日志数据量非常巨大的情况下,数据库无法承载巨大的插入和 ...

  9. php if foreach个数记录,php foreach循环只返回数组中第一次迭代的值

    我似乎无法确定为什么我的foreach循环能够循环所有5个生成的ProductionOrderID,但只返回第一个ID的数据. 我的理解是数组正确循环,因为你可以在这里看到当前结果:https://i ...

最新文章

  1. 2015.11.11
  2. 学习C语言深入解剖笔记之关键字的秘密
  3. 中级职称计算机网络安全论文,中级职称答辩论文的计算机络综合布线系统设计.doc...
  4. GNU Radio ieee802-15-4、ZigBee 实现
  5. 《那些年啊,那些事——一个程序员的奋斗史》——76
  6. boost::interprocess::named_mutex的翻译和学习
  7. java类成员和实例成员,Java 实例成员和类成员
  8. edge无法打印pdf_一文搞定PDF无法复制/打印/编辑
  9. vue.js高德地图实现热点图
  10. 微电子专业要学c语言吗,微电子不是人能学的!
  11. 矩阵卷积运算的三种方式及C语言实现
  12. windows x86和x64的区别
  13. 渗透测试工具之——初识burp
  14. c纳秒级计时器_C#中的高精度计时方法(纳秒级别计时)
  15. Ian Goodfellow回忆GAN诞生故事:几杯啤酒喝出“20年来最酷的深度学习想法”
  16. vmware装的ubuntu的界面怎么全屏?
  17. layui table动态选中_ODME与动态交通分配——DTALite使用测评
  18. 加班奖金终于发下来了!3060显卡自费包邮送!
  19. 国内五大最贵的两字母域名
  20. 【数据结构】采用邻接矩阵表示法创建无向网、无向图、有向图、有向网

热门文章

  1. BUUCTF 面具下的flag writeup
  2. 算法题--第几个幸运数
  3. vue中MVVM模型
  4. 美团高级技术专家艺涛:深度学习在搜索业务中的探索与实践
  5. 2020年焊工(技师)考试资料及焊工(技师)考试申请表
  6. python 实战之模仿开发QQ聊天软件(三)TCP/IP服务器与客户端建设
  7. redis相关 主从架构
  8. android 编写发表帖子的页面
  9. java ee 中文_javaee中的中文乱码处理
  10. python nodemcu_NodeMCU-32S MicroPython固件的使用