mysql如果有值返回true_关于mysql的tinyint字段调用返回true/false的问题
问题背景
这里有一张表,只有一个字段status
t_mysql_tinyint
表中数据如下:
data
status在业务逻辑中可能出现以下几种情况:
1:表示对象正常使用
2:表示对象已过期
0:表示对象已被删除
在MVC模式下,写sql语句操作数据库:
一般情况下,我们会用Page,List或Map封装执行sql后的数据用于业务操作。
public Page findPageListMap(final String sql,Page page,Object... arrayParameters);
public List> findUniqueMapByArray(final String sql, Object... arraryParameters);
public Map findUniqueMapByArray(final String sql, Object... arrayParameters);
问题描述
当在ServiceImpl我们进行数据操作时:
public Page getStatusReturnPage() {
String sql = "select status from t_mysql_tinyint";
return baseDao.jdbcTemplate.findPageListMap(sql,page);
}
public List> getStatusReturnList() {
String sql = "select status from t_mysql_tinyint";
return baseDao.jdbcTemplate.findUniqueMapByArray(sql,page);
}
public MapgetStatusReturnMap() {
String sql = "select status from t_mysql_tinyint";
return baseDao.jdbcTemplate.findUniqueMapByArray(sql);
}
在Controller中分别调用三个方法
status1 = status.getStatusReturnPage();
status2 = status.getStatusReturnPage();
status2 = status.getStatusReturnPage();
System.out.print("status1: " + status1 + "\nstatus2: " + status2 + "\nstatus3: " + status3 );
打印出来的结果是 status1:2,status2:2,status3:true
这就有点奇怪了,Map返回的值竟然是布尔型!!
问题分析与解决
症状:
使用MySqlClient访问tinyint unsign 字段返回布尔值 true 和 false,但是实际上该字段存储值为1-255分析:
由于在Mysql中没有布尔类型值,MySqlClient在访问tinyint类型字段时默认作为布尔值使用。
解决:
1.在连接串中增加 Treat Tiny As Boolean=false 配置.
2.对应字段在SQL语句中*1,这样,读取出的字段值默认会被转换成int类型.
3.如果不是仅存取true和false,建议设计时使用int.
相关资料:
根据官方文档 10.1.1. Overview of Numeric Types ,在 MySql 中还没有严格的 bool 类型,但使用 TINYINT(1) 隐式用作 bool 类型,零作为false,而非零值(包括负数)作为true。但,这是不对称的。在执行逻辑比较时,true 等于 1,false 等于 0,但 true 不等于 2。这个文档显示的 MySql 5.0,其他后续版本是否有严格的 bool 类型未知。
在 MySql Connector/Net 中,遵循了上面这个约定,假如某个字段类型是 tinyint(1),则会被自动映射成 Boolean 类型。如果要禁用这个映射,可以在连接字符串中,配置 Treat Tiny As Boolean=false。这个选项的默认值是 true。参考 21.2.6. Connector/NET Connection String Options Reference 。没有查到这个选项从 Connector/Net 哪个版本开始支持,应该是 Connector/Net 5.x 之后都支持。
mysql如果有值返回true_关于mysql的tinyint字段调用返回true/false的问题相关推荐
- mysql更改表 值_如何更改MySQL表中行实例的值?
UPDATE命令以及WHERE子句可用于更改行实例的值.基本上,MySQL将根据查询中给出的条件更改值.下面的例子可以证明它 假设我们想在下面给出的"测试"表中将名称从" ...
- mysql jpa默认值_java – Spring JPA – 枚举中枚举字段的默认值
我们有一个带有枚举字段的实体 – emailCommunicationStatus,我们想要使用JPA注释为其设置默认值 – 'UNKNOWN'. 但是,当我们将实体保存到DB时,此字段的值为null ...
- mysql 计算差值_Prometheus + Granafa 构建MySQL监控平台
来源:https://blog.51cto.com/xiaoluoge/2476375 作者:小罗ge11 概述 对于MySQL的监控平台,相信大家实现起来有很多了:基于天兔的监控,还有基于zabbi ...
- mysql怎么把值更新成space,MySQL表的碎片整理和空间回收小结
MySQL表碎片化(Table Fragmentation)的原因 关于MySQL中表碎片化(Table Fragmentation)产生的原因,简单总结一下,MySQL Engine不同,碎片化的原 ...
- 易语言mysql怎么写字段值_易语言数据库怎么加字段 数据库添加字段说明
易语言将access数据库作为数据源怎么添加记录到access? .版本 2 .支持库 eDB 数据库连接1.连接Access (取运行目录 () + "数据库名称", " ...
- 让mysql中行的值拼接_在MySQL中行值包含字符串的SELECT?
要在MySQL中选择包含字符串的行值,请使用以下语法.SELECT *FROM yourTableName where yourColumnName like '%yourPattern%'; 为了理 ...
- mysql 自动递增值归零_修改MySQL自动递增值
[转] Jenkins实战演练之Windows系统节点管理 [前提] 通过(http://my.oschina.net/iware/blog /191818)和 NK3C框架(MyBatis.Duri ...
- 【MYSQL 按照固定值进行排序 order by field()】
MYSQL 按照固定值进行排序 总结 #MySQL中 order by 自定义值排序 mysql 原有的排序方式:当排序的字段未int类型的时候,咱们可以直接 order by num: mysql ...
- mongo 查询显示字段_MongoDB查询指定字段(field)返回指定字段的方法
使用MongoDB的时候需要只查询指定的字段进行返回,也就是类似mysql里面的 SELECT id,name,age 这样而不是SELECT *.在MongoDB里面映射(projection)声明 ...
最新文章
- ASP.NET MVC + ECharts图表案例
- Echarts组件 tooltip提示formatter函数
- step1 . day7 C语言基础练习之指针和函数
- 工业机械类企业官网织梦模板源码
- Ubuntu 设置网卡固定IP
- 冤冤相报何时了?奥克斯、格力再互怼,“周一见”
- 测试化验加工费云服务器文献信息,监管▕ 科研经费使用中的 “红线”和“禁区”典型问题自查清单...
- php redis sorted set,Redis 有序集合(sorted set)
- java连接数据库的详细步骤?
- 树莓派 opencv 调用摄像头
- win10任务栏透明_5 款 Windows 任务栏增强工具推荐
- 4.2 metasploit 开发 exploit
- 聊聊IT外包公司(外包公司的运作模式和赚钱之道)
- Python爬虫实战 - 抓取BOSS直聘职位描述 和 数据清洗
- Preparatory Class-Day8------函数
- 【b302】侦探推理
- 【杂题】cf1041fF. Ray in the tube
- 前后端分离校园智能出行拼车系统
- BZOJ 4407于神之怒加强版
- 前端下载文件(二进制文件流brob和url下载)
热门文章
- Android 10 去掉系统默认谷歌输入法
- npm ERR! code ETIMEDOUTnpm ERR! errno ETIMEDOUTnpm ERR! network request to http://nexus.h3yun.com:
- Mac OS 脚本生成dmg安装文件
- 比Visio牛逼的流程图工具,Visio替代品!
- 我的读书笔记——Paralled Scavenge 收集器
- HDU 2036 改革春风吹满地 (求多边形面积)
- 【详细说明】二代身份证号码的组成结构(含校验码算法与行政区划代码)
- NVDLA学习笔记(2)
- 基于AnimeGAN模型生成宫崎骏风格动漫照片
- IDEA Maven 依赖分析插件Maven Helper