MySQL字段類型對應Java字段

前言

MySQL Connector/J 對於 MySql 數據類型和 Java 數據類型之間的轉換是很靈活的: 一般來講,任何 MySql 數據類型都可以被轉換爲一個 java.lang.String。 任何 MySql 數字類型都可以被轉換爲任何一種 Java 數字類型。 (當然這樣也可能出一些四捨五入,溢出,精度丟失之類的問題)。

 

Java基礎類型與包裝類型

a)   如果數據庫字段是允許爲空的,使用包裝類。   如果不允許爲空,使用包裝的時候,如果你往數據庫插入null值,此時就會拋出異常。   然後你就可以對異常進行捕獲並處理。

b)   使用基本數據類型的時候,如果字段是NULL,那麼JDBC會返回0,但是這裏會有一個問題。   有可能0在你的業務邏輯代表着特定含義,這時候就可能出現一些意想不到的後果。 總結:在項目中去使用包裝類型而不是基本數據類型,這樣可以使你編寫代碼更簡單

 

ResultSet.getObject() 對 MySql 類型和 Java 類型轉換表

MySql 類型名 GetColumnClassName 返回值 返回的 Java 類
bit(1) (MySQL-5.0) BIT java.lang.Boolean
bit(大於1) (MySQL-5.0) BIT byte[]
tinyint TINYINT 如果 tinyInt1isBit 配置設置爲 true(默認爲 true),是java.lang.Boolean,存儲空間爲 1;否則是爲 java.lang.Integer
bool boolean TINYINT 參見 TINYINT。這些是 TINYINT(1) 另一種寫法
smallint(M) [unsigned] SMALLINT [UNSIGNED] java.lang.Integer(不管是否無符)
mediumint(M) [unsigned] MEDIUMINT [UNSIGNED] java.lang.Integer
int integer(M) [unsigned] INTEGER [UNSIGNED] java.lang.Integer;無符的話是 java.lang.Long
bigint(M) [unsigned] BIGINT [UNSIGNED] java.lang.Long;無符的話是 java.math.BigInteger
float(M,D) FLOAT java.lang.Float
double(M,B) DOUBLE java.lang.Double
decimal(M,D) DECIMAL java.math.BigDecimal
date DATE java.sql.Date
datetime DATETIME java.sql.Timestamp
timestamp(M) TIMESTAMP java.sql.Timestamp
time TIME java.sql.Time
year(2/4) YEAR 如果 yearIsDateType 配置設置爲 false,返回的對象類型爲 java.sql.Short;如果設置爲 true(默認爲 true),返回的對象類型是 java.sql.Date,其具體時間是爲一月一日零時零分
char(M) CHAR java.lang.String(除非該列字符集設置爲 BINARY,那樣返回 byte[])
varchar(M) [binary] VARCHAR java.lang.String(除非該列字符集設置爲 BINARY,那樣返回 byte[])
binary(M) BINARY byte[]
varbinary(M) VARBINARY byte[]
tinyblob TINYBLOB byte[]
tinytext VARCHAR java.lang.String
blob BLOB byte[]
text VARCHAR java.lang.String
mediumblob MEDIUMBLOB byte[]
mediumtext VARCHAR java.lang.String
longblob LONGBLOB byte[]
longtext VARCHAR java.lang.String
enum('value1','value2',...) CHAR java.lang.String
set('value1','value2',...) CHAR java.lang.String

 

 

Mysql字段類型

decimal(8,2): 有2位小數的定點數,定點數支持很大的數(甚至是超過int,bigint存儲範圍的數) decimal不會損失精度,存儲空間會隨數據的增大而增大。double佔用固定空間,較大數的存儲會損失精度。

字符串型: 定長與變長的區別,CHAR類型佔用空間比較大,但是處理速度比VARCHAR快。 如果長度變化不大,最好選擇CHAR類型。對於長度不確定的,最好選擇VARCHAR。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章