MySQL "tinyInt1isBit or tinyint" 相关问题解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL "tinyInt1isBit or tinyint" 相关问题解析相关的知识,希望对你有一定的参考价值。

问题描述

tinyInt 的数据类型,在JAVA数据类型 和 mysql的数据类型转换,要注意存储长度为 1 的情况。查询时,该字段对应的Java类型为Boolean

源数据:

读取后数据: 

问题分析

 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"

conn_str="jdbc:mysql://${hostname}/${db_name}?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useSSL=true&dontTrackOpenResources=true&defaultFetchSize=10000&useCursorFetch=true"

 

Amazing MySQL !~~

以上是关于MySQL "tinyInt1isBit or tinyint" 相关问题解析的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 插入移动端表情数据

Spark JDBC系列--Mysql tinyInt字段特殊处理

sqoop提交参数说明

sqoop提交参数说明

MySQL JDBC 中 tinyint 处理为Boolean 的代码逻辑

tinyint用java转化为int的坑