为什么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) 作为字段的数据类型

博文参考:
关于 MySQL 的 boolean 和 tinyint(1)
Mysql tinyint长度为1时在java中被转化成boolean型
http://www.cnblogs.com/joeylee/p/3878223.html

猜你喜欢

转载自mingyundezuoan.iteye.com/blog/2401314