概述
问题描述:
建表,字段类型 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]
最后
以上就是负责蜡烛为你收集整理的为什么tinyint(1)映射po类中属性时的字段类型为Boolean的全部内容,希望文章能够帮你解决为什么tinyint(1)映射po类中属性时的字段类型为Boolean所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复