Mysql tinyint长度为1时在java中被转化成boolean型
在项目中遇到一个巨坑,程序没问题,从mysql查询到的tinyint数据中莫名其妙的变成了布尔类型,导致后续出错。这种细节性的问题,只有遇到时才会关注到,记录备忘。下面是详细解释:在项目中有一个字段为user_type,长度设置为1,表示注册用户和非注册用户,是注册用户为 1,否则为 2。因为查询语句是使用的Jfinal相关函数,查找到其中的获取数据类型字段程序,如下所示:
·
在项目中遇到一个巨坑,程序没问题,从mysql查询到的tinyint数据中莫名其妙的变成了布尔类型,导致后续出错。这种细节性的问题,只有遇到时才会关注到,记录备忘。
下面是详细解释:
在项目中有一个字段为user_type,长度设置为1,表示注册用户和非注册用户,是注册用户为 1,否则为 2。因为查询语句是使用的Jfinal相关函数,查找到其中的获取数据类型字段程序,如下所示:
在图中光标处断点发现,通过getObeject后,类型变为boolean。而其中tinyint长度为4的,经过转化后没有问题,确定是getObeject对长度为1的处理有问题。经过查找资料,发现网上确实有这个问题的介绍。链接如下:
http://www.cnblogs.com/joeylee/p/3878223.html
解决方法 .
Tinyint(1) 就只用来保存 bool 值 只有0和1 不要保存其他的值,如果要保存多的值,就用 Tinyint(4)
附:
常见数据库字段类型与java.sql.Types对应表
Oracle与java.sql.Types的对应
Oracle java.sql.Types
blob blob
char char
clob clob
date date
number decimal
long varbinary
nclob,nvarchar2 other
smallint smallint
timestamp timstamp
raw varbinary
varchar2 varchar
Sql server与java.sql.Types的对应
Sql server java.sql.Types
bigint (2005,2008) bigint
timstamp,binary binary
bit bit
char,nchar,unqualified char
datetime date
money,smallmoney,decimal decimal
float (2005,2008) double
float(2000) float
int integer
image longvarbinary
text,ntext,xml longvarchar
numeric numeric
real real
smallint smallint
datetime,smalldatetime timestamp
tinyint tinyint
varbinary varbinay
nvarchar,varchar varchar
DB2与java.sql.Types的对应
bigint bigint
blob blob
character,graphic char
clob clob
date date
decimal decimal
double double
integer integer
longvargraphic longvarchar
longvarchar
real real
smallint smallint
time time
timestamp timestamp
vargraphic varchar
varchar
MySQL与java.sql.Types的对应
MySQL java.sql.Types
bigint bigint
tinyblob binary
bit bit
enum,set,char char
date,year date
decimal,numeric decimal
double,real double
mediumint,int integer
blob,mediumblob blob
longblob
float real
smallint smallint
time time
timestamp,datetime timestamp
tinyint tinyint
varbinary,binary varbinay
varchar,tinytext,text varchar
更多推荐
已为社区贡献2条内容
所有评论(0)