mysql 数据库 tinyint 类型字段取数变成 true/false 的解决方案
问题描述:
在 mysql 数据库设定上,有个字段类型是 tinyint 类型,长度为 1,
设定如下所示:
常规 sql 取数,
取到润乾报表内的时候,这个字段数据变成了 true/false
如果 tinyint 长度设置成 1,查出来是 true/false
问题分析
MySQL 官方的 JDBC 文档定义转换规则如下:
如果 tinyInt1isBit=true(默认),且 tinyInt 存储长度为 1,则转为 java.lang.Boolean,否则转为 java.lang.Integer。
解决方案
1、避免使用长度为 1 的 tinyint 类型字段存储数字格式的数据,tinyInt(1) 只用来代表 Boolean 含义的字段。其中 0 代表 False,1 代表 True。如果要存储多个数值,则定义为 tinyInt(N), N>1。例如 tinyInt(2)
2、JDBC 的 URL 增加 tinyInt1isBit=false 参数,注意参数名区分大小写,否则不生效。
final private val URL = “jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useSSL=true”