当遇到tyint 生成转化bool  类型问题很恶心,记录一下解决方法

一、

TinyInt转换规则

JAVA数据类型 和 MYSQL的数据类型转换,要注意tinyInt 类型,且存储长度为1的情况。

MYSQL官方的JDBC文档定义转换规则如下:

MySQL Types to Java Types for ResultSet.getObject():

MySQL Type Name
Return value of GetColumnClassName
Returned as Java Class
TINYINT TINYINT

java.lang.Boolean if the configuration property tinyInt1isBit is set to true(the default) and the storage size is 1, or java.lang.Integer if not.

翻译:

如果tinyInt1isBit =true(默认),且tinyInt存储长度为1 ,则转为java.lang.Boolean 。

否则转为java.lang.Integer。

()

注意 ,是ResultSet.getObject() 方法

参考文档:https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-type-conversions.html

修复方法

1、tinyInt(1) 只用来代表Boolean含义的字段,且0代表False,1代表True。如果要存储多个数值,则定义为tinyInt(N), N>1。例如 tinyInt(2)

2、JDBC的URL增加 tinyInt1isBit=false参数,注意参数名区分大小写,否则不生效

jdbc:mysql://${ucmha.proxy1_2.host}/${db.mysql.db}?tinyInt1isBit=false

建议双管齐下,以防新人接手不知道这个规则误踩坑。

二、按官方建议的类型处理

本文讲述了Java数据类型与MySql数据类型对照表。分享给大家供大家参考,具体如下:

类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int)
VARCHAR L+N VARCHAR java.lang.String 12
CHAR N CHAR java.lang.String 1
BLOB L+N BLOB java.lang.byte[] -4
TEXT 65535 VARCHAR java.lang.String -1
INTEGER 4 INTEGER UNSIGNED java.lang.Long 4
TINYINT 3 TINYINT UNSIGNED java.lang.Integer -6
SMALLINT 5 SMALLINT UNSIGNED java.lang.Integer 5
MEDIUMINT 8 MEDIUMINT UNSIGNED java.lang.Integer 4
BIT 1 BIT java.lang.Boolean -7
BIGINT 20 BIGINT UNSIGNED java.math.BigInteger -5
FLOAT 4+8 FLOAT java.lang.Float 7
DOUBLE 22 DOUBLE java.lang.Double 8
DECIMAL 11 DECIMAL java.math.BigDecimal 3
BOOLEAN 1 同TINYINT    
ID 11 PK (INTEGER UNSIGNED) java.lang.Long 4
DATE 10 DATE java.sql.Date 91
TIME 8 TIME java.sql.Time 92
DATETIME 19 DATETIME java.sql.Timestamp 93
TIMESTAMP 19 TIMESTAMP java.sql.Timestamp 93
YEAR 4 YEAR java.sql.Date 91

对于bolb,一般用于对图片的数据库存储,原理是把图片打成二进制,然后进行的一种存储方式,在java中对应byte[]数组。

对于boolen类型,在mysql数据库中,个人认为用int类型代替较好,对bit操作不是很方便,尤其是在具有web页面开发的项目中,表示0/1,对应java类型的Integer较好。

完结

最新文章

  1. python基础:算法是什么
  2. 用词法分析器Flex过滤日志
  3. javascript高级程序设计 读书笔记2
  4. 关于List.ToArray()方法的效率测试
  5. The Ninth Hunan Collegiate Programming Contest (2013) Problem I
  6. x86与x64与x86_64
  7. 【零基础学习iOS开发】【01-前言】01-开篇
  8. 关于C++的子类指针指向父类
  9. C#内存分配学习
  10. 【BZOJ3524/2223】[Poi2014]Couriers 主席树
  11. angularf封装echarts
  12. Python自动化--语言基础6--模块操作之re、MySQL、Excel
  13. 弹飞绵羊[HNOI2010]
  14. sql 语句按字段指定值排序及分页
  15. C# Note4:XML序列化和反序列化(含加密解密等)
  16. Kubernetes代码解读-apiserver之list-watch
  17. $.extend与$.fn.extend()
  18. exchange 2010
  19. 复习C语言:第一章
  20. 【原】【BG】-一次虚拟化环境实践简要记录

热门文章

  1. asp控制项目超时
  2. 双向链表-java完全解析
  3. 常用模块:re ,shelve与xml模块
  4. 微信通过openID发送消息/后台post、get提交并接收数据
  5. ORACLE常用数值函数、转换函数、字符串函数介绍
  6. CYQ.Data 数据框架 使用篇一 入门指南---001
  7. 技术思维VS管理思维
  8. uva-10344
  9. uva579-简单计算题
  10. WebService客户端调用的几种方式