今天遇到Mybatis直接查Sqlserver数据库时间 时分秒被置空的问题
在做列映射时是这样的
<result column="CREATETIME" jdbcType="DATE" property="createTime" />
经分析发现是这个映射出问题了
改成如下
<result column="CREATETIME" jdbcType="TIMESTAMP" property="createTime" />
时间全部完整显示。
把sqlserver的时间(datetime类型)映射为jdbcType为DATE类型的话会丢失时分秒,原因是java.sql.date类型是不支持时分秒的,由此映射成TIMESTAMP类型完整显示。
下面附jdbcType类型与Oracle、Mysql、Sqlserver数据类型对应关系:
Oracle与java.sql.Types的对应
Oracle | java.sql.Types (jdbcType) |
---|---|
blob | blob |
char | char |
clob | clob |
date | date |
number | decimal |
long | varbinary |
nclob,nvarchar2 | other |
smallint | smallint |
timestamp | timestamp |
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 |
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 |