mybatis 查询之神坑
先看一个示例:
数据表数据:
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 查询之神坑相关推荐
- mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string
mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from strin ...
- 不敢相信,相同 SQL 下 Mybatis 查询结果和数据库竟然不一样!
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | jianshu.com/p/7c569ca68 ...
- Spring Boot之基于Redis实现MyBatis查询缓存解决方案
转载自 Spring Boot之基于Redis实现MyBatis查询缓存解决方案 1. 前言 MyBatis是Java中常用的数据层ORM框架,笔者目前在实际的开发中,也在使用MyBatis.本文主要 ...
- 【Java从0到架构师】MyBatis - 查询
MyBatis - 查询 数据库事务 (Database Transaction) MyBatis 使用准备 依赖 配置文件 创建 Session MyBatis 查询 实体映射 字段映射 - res ...
- mybatis查询返回null解决方案
mybatis查询返回null解决方案 参考文章: (1)mybatis查询返回null解决方案 (2)https://www.cnblogs.com/zipon/p/6361661.html 备忘一 ...
- Mybatis查询oracle之clob类型
clob是大字段,可以存储文档内容,mybatis查询clob字段需要做一些处理,才可以返回字符串,可用以下方法处理: 1.public static String getClob(Object o) ...
- @Transactional注解和Mybatis缓存问题(Mybatis 查询结果 List 对List修改后再次查询,结果与数据库不一致)
Mybatis 查询结果 List 对List修改后再次查询,结果与数据库不一致 使用 Mybatis 查询,结果为对象的 List ,修改List内的参数后,使用相同参数再次查询,发现查询结果与数据 ...
- 快速入门mybatis(查询、添加日志、插入)
快速入门mybatis(查询.添加日志.插入) 参考学习视频网址:https://www.bilibili.com/video/BV185411s7Ry?p=9&spm_id_from=pag ...
- mybatis查询时间段sql语句和DATE_FORMAT
1.mysql 格式化日期 DATE_FORMAT,FROM_UNIXTIME,UNIX_TIME等 DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. Sql代码 DATE_ ...
最新文章
- 计算机语言编程能力有哪些,除了编程语言,程序员还需要具备哪些能力
- 皮一皮:有钱人的世界咱不懂之不知道第几次...
- python和c++哪个好学-你应该学Python还是C++
- vb访问mysql容易死机_VB访问MySQL
- id vue2路由传参_vue 路由跳转传参
- for循环如果先--_97-for循环嵌套 输出反倒直角三角形
- LeetCode447. Number of Boomerangs
- Unity项目中的资源管理
- html如何消除空格字符串,jquery如何去除字符串的空格
- php如何获取当前几号,PHP如何获取当前时间
- 什么是 UCOS操作系统及特点
- 微信公众号开发之课堂考勤
- Windows使用批处理文件更改指定目录下的文件名(含序号)
- c# webbrowser html5,C#设置WebBrowser IE浏览器版本
- cocos2dx游戏-可爱的小精灵的各种用法大全
- 用 JAVA 实现画板
- Problem E. L04-05 计算银行存款余额和利息(单利计算简单问题)
- python俄罗斯方块的消除算法_1.1.3python tkinter实现俄罗斯方块基础版-生成、移动、固定、消除...
- 32微型计算机中的32室,32 位微型计算机中的32是指( )_学小易找答案
- 乌克兰基辅一世遗修道院起火 现场火光照亮夜空
热门文章
- leetcode 387. 字符串中的第一个唯一字符(hash)
- leetcode915. 分割数组
- 客户旅程_我们进入微服务世界的旅程-以及从中学到的东西。
- 如何让代码更易于维护_如何轻松地使您的网站更易于访问
- 为什么要free释放内存_为什么在Free Code Camp上列出一份工作要花1,000美元?
- XSS攻击(出现的原因、预防措施......)
- 在Windows上面安装多个Memcached
- IE6/IE7/Firefox浏览器不兼容原因及解决办法
- 在HTML中插入JavaScript代码的方式
- 编写一个字节数的rtu C语言校验程序,Modbus通信协议中CRC校验的快速C语言算法