第一种情况,直接返回

select id='22aa' from mytest where age=202  返回1 可封装为true
select count(*)=1 from mytest where age=202  返回1 可封装为true
select count(*)=0 from mytest where age=202  返回0 可封装为false
select count(*)<3 from mytest where age=202  返回1 可封装为true
select count(*)<=1 from mytest where age=202  返回1 可封装为trueselect name="aa" from mytest where age=10  当name为null时,sql不会报错,返回结果也为nul,参照第二种情况的sql 3 代码会报错

总结:这种情况类似于java中的判断语句。只是java中=是赋值的意思,所以用了==来做判断,而mysql中赋值用set,判断就直接用=。

第二种情况,返回0或者1也能达到目的

1.select enable from mytest where age=202  返回1  可封装为true
2.select count(*) from mytest  返回4  可封装为Boolean类型,但为false
3.select enable from mytest where age=201 返回null  不可封装为Boolean类型,代码会直接报错
4.select id from mytest where age=202   返回'22aa'   可封装为Boolean类型,但为false
5.select id from mytest where age=202   返回'true'   可封装为Boolean类型,但为true
6.select id from mytest where age=202   返回'false'   可封装为Boolean类型,false
//特殊情况
7.select * from mytest  报错Expected one result (or null) to be returned by selectOne(), but found: 4
8.select * from mytest where age=202  返回一组数据false 2019-08-28 202 15 1 ,可以封装为false
9.select * from mytest where age=202  返回一组数据true 2019-08-28 202 15 1 ,可以封装为true
10.select * from mytest where age=202  返回一组数据aaaa2019-08-28 202 15 1 ,可以封装为false

总结:Mybatis是根据查询到的记录数进行转换的(1=true,0=false)
需要注意的地方:如果查询到多条记录(大于1),返回的却是false, 这时就与我们的期望的刚好相反。这里,可以换其它方法,可以通过返回记录数,进行判断,也可以保证记录在数据库是唯一的。也可以直接用第一种情况解决。

根据第4、5、6条sql语句的测试,如果字符串是"true",就可以封装为true,如果为"false"就可以封装为false,其他情的字符串都为false。
(猜测,并不准确,需要到mysql官网上来查,如果返回的字段是字符串,将其转为Boolean时是按什么规则转换的,猜测是类似于java中的字符串转Boolean方法:Boolean.valueOf(“aaa”) //false,该方法如下)


至于8、9、10的sql返回一组,而接受数据的只要一个时的情况,为什么就取了id的值来封装,有待继续研究。

mysql返回Boolean类型的几种情况相关推荐

  1. mysql has gone_导致“mysql has gone away”的两种情况

    导致"mysql has gone away"的两种情况 By Cruise 1.  wait_timeout参数 在开发代理server时, 我使用了jdbc连接数据库,并采用长 ...

  2. phpstudy中mysql启动不起来的一种情况和解决办法

    文章目录 情况 错误日志 排查错误 错误1 硬盘扇区大小 导致的问题 错误2 缺少VC运行库 记录phpstudy的mysql启动不起来的一种情况及解决办法 ①首先排除了端口占用 根据错误日志,发现了 ...

  3. Mysql索引会失效的几种情况分析

    转自:http://www.jb51.net/article/50649.htm 在做项目的过程中,难免会遇到明明给mysql建立了索引,可是查询还是很缓慢的情况出现,下面我们来具体分析下这种情况出现 ...

  4. MySQL中boolean类型设置

    在用MySQL设置boolean的时候发现跟本就没有这种类型,后来查资料才知道: boolean类型用tinyint表示, MYSQL保存BOOLEAN值时用1代表TRUE,0代表FALSE,bool ...

  5. mysql测试死锁_mysql死锁几种情况的测试_MySQL

    sessionA: test>begin -> ; Query OK, 0 rows affected (0.00 sec) test>select * from tt where ...

  6. MySql复合索引失效的几种情况

    建表 插入数据 建立复合索引 或者 查询插入的索引 执行测试Sql 测试数据1 这里常规查询,分别查询了当使用复合索引中的部分字段当查询条件时的索引使用情况,通过explain执行计划结果显示,以上四 ...

  7. java responsebody_java – 在一种情况下返回@ResponseBody,在另一种情况下返回ModelAndView...

    我有一个弹簧控制器方法.它旨在以编程方式注册用户(通过产品内其他系统的单一登录流程).它的工作原理是获取用户数据,验证它,创建用户帐户(如果不存在),将共享令牌传送回另一个系统,然后验证用户.正在进行 ...

  8. MySQL笔记-解决...mysql.sock (13)(两种情况会产生此问题)

    遇到这个mysql.sock(13)一般是两种情况. 一个是mysql.sock权限不够,最少要个775权限: chmod -R 775 /var/lib/mysql/ 如果嫌烦的话赋予777就可以了 ...

  9. sql boolean类型

    关于 MySQL 的 boolean 和 tinyint(1) boolean类型 MYSQL保存BOOLEAN值时用1代表TRUE,0代表FALSE,boolean在MySQL里的类型为tinyin ...

最新文章

  1. 片元着色器(Fragment Shader)被称为像素着色器(Pixel Shader),但
  2. find -exec 与xargs 区别
  3. oracle数据库分层,Oracle数据库的分层查询(一)
  4. php一句话后门学习(含免杀)
  5. 2012.2.9日晚亚马逊的一个错误链接截图
  6. 计算机字体原理,字体图标生成原理(1)
  7. id 重启event_windows 2003 R2 系统自动重启了. event ID 6008
  8. Java ClassLoader findClass()方法与示例
  9. mysqldump备份数据不锁表的加参数方法及原理分析
  10. jq 批量删除 php,批量删除JQuery获取选中的CheckBox值
  11. poj 2573 Bridge(有A、B、C、D四个人,要在夜里过一座桥……)
  12. 【CCCC】L3-023 计算图 (30分),dfs搜索+偏导数计算
  13. ospf多区域实例配置
  14. Java判断是否为移动端
  15. 比较(0,π/2]上对sinx/x的定积分、对x/sinx的定积分与1的大小关系
  16. Javascript设计模式-00-说明
  17. 为什么java数值型的负数比正数多一位
  18. P问题、NP问题、NPC问题(算法复杂性,计算复杂性)
  19. 使oracle支持dbo,Oracle.ManagedDataAccess.EntityFramework – ORA-01918:用户’dbo’不存在
  20. Linux打补丁遇到Hunk# succeeded at提示

热门文章

  1. 算法——所有节点对的最短路径:Floyd-Warshall算法、Johnson算法
  2. [BZOJ4431][Nwerc2015]Hole in One一杆进洞
  3. win10热点显示我们无法设置移动热点
  4. 陈广琛谈TechEd2009
  5. java localdate_Java日期LocalDate使用
  6. php 怎么查看日志,怎么看php错误日志
  7. 用html浮雕效果图,利用css实现浮雕效果示例代码
  8. 游戏外挂设计终极教程2
  9. 关于Matlab仿真 Emperor牌奴隶方获胜概率
  10. SystemVerilog联合体