在做jsp項目的時候遇到一個問題,就是把java.util.Date類型的數據插入到Mysql中的時候,如果數據庫字段類型設置爲dateTime類型,數據庫中的時間就會變成“0000-00-00 00:00:00”,如果數據庫設置爲date類型數據庫中的時間就會是“0000-00-00”,經過百度發現Mysql數據庫中的date對應java中的時間類型爲java.sql.Date,Mysql數據庫中的dateTime對應java中的時間類型爲 java.sql.Timestamp,於是我將java中的時間類型全部改成java.sql.Date才解決問題。
爲了方便以後學習將MySql,Sql Server,Oracle三種常用數據庫的數據類型與java的數據類型對應關係整理如下:
MySql數據類型與Java數據類型的對應:
類型名稱 | 顯示長度 | 數據庫類型 | JAVA類型 | JDBC類型索引(int) |
VARCHAR | L+N | VARCHAR | java.lang.String | 12 |
CHAR | N | CHAR | java.lang.String | 1 |
BLOB | L+N | BLOB | java.lang.byte[] | -4 |
TEXT | 65535 | VARCHAR | java.lang.String | -1 |
INTEGER | 4 | INTEGER UNSIGNED | java.lang.Long | 4 |
TINYINT | 3 | TINYINT UNSIGNED | java.lang.Integer | -6 |
SMALLINT | 5 | SMALLINT UNSIGNED | java.lang.Integer | 5 |
MEDIUMINT | 8 | MEDIUMINT UNSIGNED | java.lang.Integer | 4 |
BIT | 1 | BIT | java.lang.Boolean | -7 |
BIGINT | 20 | BIGINT UNSIGNED | java.math.BigInteger | -5 |
FLOAT | 4+8 | FLOAT | java.lang.Float | 7 |
DOUBLE | 22 | DOUBLE | java.lang.Double | 8 |
DECIMAL | 11 | DECIMAL | java.math.BigDecimal | 3 |
BOOLEAN | 1 | 同TINYINT | ||
ID | 11 | PK (INTEGER UNSIGNED) | java.lang.Long | 4 |
DATE | 10 | DATE | java.sql.Date | 91 |
TIME | 8 | TIME | java.sql.Time | 92 |
DATETIME | 19 | DATETIME | java.sql.Timestamp | 93 |
TIMESTAMP | 19 | TIMESTAMP | java.sql.Timestamp | 93 |
YEAR | 4 | YEAR | java.sql.Date | 91 |
SQL Server數據類型與Java數據類型的對應:
Java數據類型 | Hibernate數據類型 | 標準SQL數據類型(PS:對於不同的DB可能有所差異) |
byte、java.lang.Byte | byte | TINYINT |
short、java.lang.Short | short | SMALLINT |
int、java.lang.Integer | integer | INGEGER |
long、java.lang.Long | long | BIGINT |
float、java.lang.Float | float | FLOAT |
double、java.lang.Double | double | DOUBLE |
java.math.BigDecimal | big_decimal | NUMERIC |
char、java.lang.Character | character | CHAR(1) |
boolean、java.lang.Boolean | boolean | BIT |
java.lang.String | string | VARCHAR |
boolean、java.lang.Boolean | yes_no | CHAR(1)('Y'或'N') |
boolean、java.lang.Boolean | true_false | CHAR(1)('Y'或'N') |
java.util.Date、java.sql.Date | date | DATE |
java.util.Date、java.sql.Time | time | TIME |
java.util.Date、java.sql.Timestamp | timestamp | TIMESTAMP |
java.util.Calendar | calendar | TIMESTAMP |
java.util.Calendar | calendar_date | DATE |
byte[] | binary | VARBINARY、BLOB |
java.lang.String | text | CLOB |
java.io.Serializable | serializable | VARBINARY、BLOB |
java.sql.Clob | clob | CLOB |
java.sql.Blob | blob | BLOB |
java.lang.Class | class | VARCHAR |
java.util.Locale | locale | VARCHAR |
java.util.TimeZone | timezone | VARCHAR |
java.util.Currency | currency | VARCHAR |
Oracle數據類型與java數據類型的對應:
SQL數據類型 | JDBC類型代碼 | 標準的Java類型 | Oracle擴展的Java類型 |
---|---|---|---|
1.0標準的JDBC類型: | |||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.0標準的JDBC類型: | |||
|
|
|
|
|
|
|
|
用戶定義的對象 |
|
|
|
用戶定義的參考 |
|
|
|
用戶定義的集合 |
|
|
|
Oracle擴展: | |||
|
| N/A |
|
|
| N/A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
以上三個表格都是從別人那拷貝過來的,感謝三位博主。