为什么tinyint(1)映射po类中属性时的字段类型为Boolean

问题描述:

建表,字段类型 tinyint 长度 1 ,映射为PO类中的字段类型为 Boolean
tinyint(3) --> Byte
tinyint(1) --> Boolean

问题原因:
1.MySQL中无Boolean类型数据;MySQL中将Boolean==》tinyint(1)
2.BOOL, BOOLEAN
These types are synonyms(同义词) for TINYINT(1). A value of zero is considered(认为是) false. Nonzero(不为0) values are considered true
3.Tinyint(1) 就只用来保存 bool 值 只有0和1 不要保存其他的值

如果要保存多的值,就用 Tinyint(4) 这样的,那么到了Ef中这个 类型会变成 sbyte ,这个就是一个整形 .

备注:sbyte:存储8位带符号整数。sbyte中的s代表带符号(signed),意味着变量可为正值或负值。sbyte变量的最小可能值为-128,最大可能值为127。


解决方法:
1.强制修改mapResult中的映射,将po属性的类型由Boolean改为Byte
2.查询 tinyint(1) 的sql 字段时,转为 (status+0) as status
3.避免使用 tinyint(1) 作为字段的数据类型

博文参考:
[url=https://www.cnblogs.com/xiaochaohuashengmi/archive/2011/08/25/2153011.html]关于 MySQL 的 boolean 和 tinyint(1)[/url]
[url=http://blog.csdn.net/yefengzhichen/article/details/50956369]Mysql tinyint长度为1时在java中被转化成boolean型[/url]
[url]http://www.cnblogs.com/joeylee/p/3878223.html[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值