在项目中遇到一个巨坑,程序没问题,从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  




Logo

更多推荐