tinyint(1)用java转化为int的坑

今天工作中有个需求:将数据库tinyint转换为int类型,在转换过程中发现该数字被转换为Boolean类型了

原因:在MYSQL官方的JDBC文档定义转换规则为:如果tinyInt1isBit =true(默认),且tinyInt存储长度为1 ,则转为java.lang.Boolean 。

否则转为java.lang.Integer。

解决办法:在URL后面加上:?tinyInt1isBit=false  

问题解决

转载于:https://www.cnblogs.com/Tomlin/p/9180869.html

### TinyIntInt 数据类型的差异及适用场景 #### 差异分析 TinyIntInt 是 SQL 中常用的两种整数类型,它们的主要区别在于存储范围和占用的空间大小。 - **TinyInt**: 这是一种非常小的整数类型,在 MySQL 中默认占 1 字节 (8 位),其取值范围为 -128 到 127(如果有符号 signed),或者 0 到 255(如果是无符号 unsigned)。由于它的存储空间较小,适用于只需要存储少量数值的情况[^4]。 - **Int**: 它是一个标准的整数类型,默认情况下占据 4 字节 (32 位)。有符号的情况下,它可以表示从 -2,147,483,648 到 2,147,483,647 的范围;如果是无符号,则可以从 0 表示到 4,294,967,295。相比 TinyInt,它能够容纳更大的数值,适合更广泛的业务需求。 #### 存储效率对比 当设计数据库表结构时,选择合适的数据类型不仅影响性能还涉及磁盘空间利用率。对于那些仅需保存极小范围内数值字段来说,选用 TinyInt 能够有效减少每条记录所消耗内存/硬盘资源量从而提高整体 I/O 效率。然而如果预计未来该列可能扩展至较大数值则应考虑使用 Int 或其他更大容量的数据类型以避免后期修改带来的麻烦。 #### 使用建议 基于上述特性,以下是两者具体应用场景推荐: - 如果某属性只存在有限几个离散状态选项(如性别编码男女),那么采用 TINYINT 就足够满足需求并节省储存成本; - 对于需要表达广泛连续区间内的任意正负整数值情形下,int 更加适合作为主键ID自增序列或是计数器等功能角色. ```sql CREATE TABLE example ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, status TINYINT NOT NULL DEFAULT '0' ); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值