今天早上定义了一个字段类型为tinyint(1),因为这个字段的值只有0到3,4种情况,本意是减少数据库的存储,所以tinyint大小足够了。tinyint默认可存-127~127范围的数字(有符号)。
当时采用tinyint(1),其实tinyint(2)之类的也是可以的,后面的数字是限制显示长度。当实际长度超出这个值时,也不会影响存储(如果有配置zerofill,那么不足的部分会左边补0)。没有超出的话,就没什么用。
当我用hibernate的方式从库里取出这个字段值的时候。发现怎么取都只是0或者1。可是库里的值已经是其他值了。所以很郁闷。我把tinyint(1)改为tiny(2)后,能正常取值了。想来这个字段类型应该是被hibernate特殊处理了。查下资料,应该是被处理成boolean了,所以只能取到0和1。下次遇到,如果不是是否什么的字段,还是改用大点的值才行。