先看一个示例:

数据表数据:

mybatis类和查询语句:

1. 当UserInfoMap中所有字段(包含association)都为NULL的话,getUserInfo的返回结果是个null,即使查询的记录存在!运行结果如下:

2019-06-26 10:50:00.800 DEBUG 95032 --- [           main] com.zcm.mybatis.dao.UserDao.getUserInfo  : ==>  Preparing: select name,phone,info_id from d_user where id = ?
2019-06-26 10:50:00.854 DEBUG 95032 --- [           main] com.zcm.mybatis.dao.UserDao.getUserInfo  : ==> Parameters: 1(Integer)
2019-06-26 10:50:00.954 DEBUG 95032 --- [           main] c.z.m.d.m.InfoMapper.selectByPrimaryKey  : ====>  Preparing: select id, card_id, birth, weight, height from d_info where id = ?
2019-06-26 10:50:00.955 DEBUG 95032 --- [           main] c.z.m.d.m.InfoMapper.selectByPrimaryKey  : ====> Parameters: 0(Integer)
2019-06-26 10:50:00.956 DEBUG 95032 --- [           main] c.z.m.d.m.InfoMapper.selectByPrimaryKey  : <====      Total: 0
2019-06-26 10:50:00.957 DEBUG 95032 --- [           main] com.zcm.mybatis.dao.UserDao.getUserInfo  : <==      Total: 1
null

2. 当UserInfoMap中有字段不为NULL的时候,getUserInfo返回的结果才不为null(前提查询的记录存在),如d_user表id=1中,为phone添加值"x",如下图:

这时再运行测试程序,结果如下:

2019-06-26 11:01:20.794 DEBUG 95861 --- [           main] com.zcm.mybatis.dao.UserDao.getUserInfo  : ==>  Preparing: select name,phone,info_id from d_user where id = ?
2019-06-26 11:01:20.856 DEBUG 95861 --- [           main] com.zcm.mybatis.dao.UserDao.getUserInfo  : ==> Parameters: 1(Integer)
2019-06-26 11:01:20.965 DEBUG 95861 --- [           main] c.z.m.d.m.InfoMapper.selectByPrimaryKey  : ====>  Preparing: select id, card_id, birth, weight, height from d_info where id = ?
2019-06-26 11:01:20.966 DEBUG 95861 --- [           main] c.z.m.d.m.InfoMapper.selectByPrimaryKey  : ====> Parameters: 0(Integer)
2019-06-26 11:01:20.967 DEBUG 95861 --- [           main] c.z.m.d.m.InfoMapper.selectByPrimaryKey  : <====      Total: 0
2019-06-26 11:01:20.968 DEBUG 95861 --- [           main] com.zcm.mybatis.dao.UserDao.getUserInfo  : <==      Total: 1
{"phone":"x"}

所以综合本测试案例,得出的最终结果是:

1. 记录存在时,不一定返回的对象一定不为null, 还要看查询的字段是否全部为NULL,或者说是否有不为NULL的字段

2. 这个测试结果跟是否有关联查询无关!

mybatis 查询之神坑相关推荐

  1. mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string

    mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from strin ...

  2. 不敢相信,相同 SQL 下 Mybatis 查询结果和数据库竟然不一样!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | jianshu.com/p/7c569ca68 ...

  3. Spring Boot之基于Redis实现MyBatis查询缓存解决方案

    转载自 Spring Boot之基于Redis实现MyBatis查询缓存解决方案 1. 前言 MyBatis是Java中常用的数据层ORM框架,笔者目前在实际的开发中,也在使用MyBatis.本文主要 ...

  4. 【Java从0到架构师】MyBatis - 查询

    MyBatis - 查询 数据库事务 (Database Transaction) MyBatis 使用准备 依赖 配置文件 创建 Session MyBatis 查询 实体映射 字段映射 - res ...

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

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

  6. Mybatis查询oracle之clob类型

    clob是大字段,可以存储文档内容,mybatis查询clob字段需要做一些处理,才可以返回字符串,可用以下方法处理: 1.public static String getClob(Object o) ...

  7. @Transactional注解和Mybatis缓存问题(Mybatis 查询结果 List 对List修改后再次查询,结果与数据库不一致)

    Mybatis 查询结果 List 对List修改后再次查询,结果与数据库不一致 使用 Mybatis 查询,结果为对象的 List ,修改List内的参数后,使用相同参数再次查询,发现查询结果与数据 ...

  8. 快速入门mybatis(查询、添加日志、插入)

    快速入门mybatis(查询.添加日志.插入) 参考学习视频网址:https://www.bilibili.com/video/BV185411s7Ry?p=9&spm_id_from=pag ...

  9. mybatis查询时间段sql语句和DATE_FORMAT

    1.mysql 格式化日期 DATE_FORMAT,FROM_UNIXTIME,UNIX_TIME等  DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. Sql代码   DATE_ ...

最新文章

  1. 计算机语言编程能力有哪些,除了编程语言,程序员还需要具备哪些能力
  2. 皮一皮:有钱人的世界咱不懂之不知道第几次...
  3. python和c++哪个好学-你应该学Python还是C++
  4. vb访问mysql容易死机_VB访问MySQL
  5. id vue2路由传参_vue 路由跳转传参
  6. for循环如果先--_97-for循环嵌套 输出反倒直角三角形
  7. LeetCode447. Number of Boomerangs
  8. Unity项目中的资源管理
  9. html如何消除空格字符串,jquery如何去除字符串的空格
  10. php如何获取当前几号,PHP如何获取当前时间
  11. 什么是 UCOS操作系统及特点
  12. 微信公众号开发之课堂考勤
  13. Windows使用批处理文件更改指定目录下的文件名(含序号)
  14. c# webbrowser html5,C#设置WebBrowser IE浏览器版本
  15. cocos2dx游戏-可爱的小精灵的各种用法大全
  16. 用 JAVA 实现画板
  17. Problem E. L04-05 计算银行存款余额和利息(单利计算简单问题)
  18. python俄罗斯方块的消除算法_1.1.3python tkinter实现俄罗斯方块基础版-生成、移动、固定、消除...
  19. 32微型计算机中的32室,32 位微型计算机中的32是指(   )_学小易找答案
  20. 乌克兰基辅一世遗修道院起火 现场火光照亮夜空

热门文章

  1. leetcode 387. 字符串中的第一个唯一字符(hash)
  2. leetcode915. 分割数组
  3. 客户旅程_我们进入微服务世界的旅程-以及从中学到的东西。
  4. 如何让代码更易于维护_如何轻松地使您的网站更易于访问
  5. 为什么要free释放内存_为什么在Free Code Camp上列出一份工作要花1,000美元?
  6. XSS攻击(出现的原因、预防措施......)
  7. 在Windows上面安装多个Memcached
  8. IE6/IE7/Firefox浏览器不兼容原因及解决办法
  9. 在HTML中插入JavaScript代码的方式
  10. 编写一个字节数的rtu C语言校验程序,Modbus通信协议中CRC校验的快速C语言算法