Java奔滑、JDBC與MySQL數(shù)據(jù)類型對照數(shù)據(jù)類型之間的轉(zhuǎn)換

開頭嘮嗑

前幾天在設(shè)計數(shù)據(jù)庫時偶然發(fā)現(xiàn)mysql還有tinyint 型的字段,百度之后知道了

TINYINT 谜喊,字段類型潭兽,如果設(shè)置為UNSIGNED類型,只能存儲從0到255的整數(shù),不能用來儲存負(fù)數(shù)
TINYINT 型的字段如果不設(shè)置UNSIGNED類型,存儲-128到127的整數(shù)斗遏。

因此我發(fā)現(xiàn)用1個tinyint型數(shù)據(jù)只占用一個字節(jié);一個INT型數(shù)據(jù)占用四個字節(jié)山卦。這看起來似乎差別不大,但是在比較大的表中诵次,字節(jié)數(shù)的增長是很快的账蓉。這個數(shù)據(jù)類型也確實(shí)能為我們節(jié)省一定存儲空間。
看著不錯我決定用它來存儲成績逾一,感覺大小剛剛好铸本,那么他在java中又對應(yīng)什么類型呢?反正寒假在家除了敲代碼也沒有什么樂趣了拍照攝影遵堵?外面霧霾大箱玷,在家吧,索性把他們之間的關(guān)系理理陌宿。

官方的關(guān)系對應(yīng)表

引自mysql.com-- Java, JDBC and MySQL Types

MySQL類型名 返回值 GetColumnClassName 返回的Java類型
BIT(1) (new in MySQL-5.0) BIT java.lang.Boolean
BIT( > 1) (new in MySQL-5.0) BIT byte[]
TINYINT TINYINT java.lang.Boolean if the configuration property tinyInt1isBit is set to true (the default) and the storage size is 1, or java.lang.Integer if not.
BOOL, BOOLEAN TINYINT See TINYINT, above as these are aliases for TINYINT(1), currently.
SMALLINT[(M)] [UNSIGNED] SMALLINT [UNSIGNED] java.lang.Integer (regardless of whether it is UNSIGNED or not)
MEDIUMINT[(M)] [UNSIGNED] MEDIUMINT [UNSIGNED] java.lang.Integer (regardless of whether it is UNSIGNED or not)
INT,INTEGER[(M)] [UNSIGNED] INTEGER [UNSIGNED] java.lang.Integer, if UNSIGNED java.lang.Long
BIGINT[(M)] [UNSIGNED] BIGINT [UNSIGNED] java.lang.Long, if UNSIGNED 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 If yearIsDateType configuration property is set to false, then the returned object type is java.sql.Short. If set to true (the default), then the returned object is of type java.sql.Datewith the date set to January 1st, at midnight.
CHAR(M) CHAR java.lang.String (unless the character set for the column is BINARY, then byte[] is returned.
VARCHAR(M) [BINARY] VARCHAR java.lang.String (unless the character set for the column is BINARY, then byte[] is returned.
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

跨類型轉(zhuǎn)換

下圖展示了MySQL JDBC允許的跨類型相互轉(zhuǎn)換锡足。

這些mysql數(shù)據(jù)類型 總是可以轉(zhuǎn)換為這些java類型
CHAR, VARCHAR, BLOB, TEXT, ENUM, and SET java.lang.String, java.io.InputStream, java.io.Reader, java.sql.Blob, java.sql.Clob
FLOAT, REAL, DOUBLE PRECISION, NUMERIC, DECIMAL, TINYINT, SMALLINT, MEDIUMINT, INTEGER, BIGINT java.lang.String, java.lang.Short, java.lang.Integer, java.lang.Long, java.lang.Double, java.math.BigDecimal
DATE, TIME, DATETIME, TIMESTAMP java.lang.String, java.sql.Date, java.sql.Timestamp

注意

如果選擇的Java數(shù)值數(shù)據(jù)類型的精度或容量低于要轉(zhuǎn)換/來自的MySQL數(shù)據(jù)類型,則可能會出現(xiàn)舍入壳坪,溢出或精度丟失舶得。

MySQL Connector / J在處理MySQL數(shù)據(jù)類型和Java數(shù)據(jù)類型之間的轉(zhuǎn)換方式方面是靈活的。

在一般情況下爽蝴,任何MySQL數(shù)據(jù)類型可以轉(zhuǎn)換為一個 java.lang.String扩灯,任何數(shù)值類型可以轉(zhuǎn)換為任意的Java數(shù)字類型的,雖然可能會出現(xiàn)舍入霜瘪,溢出或精度損失珠插。

參考建議

Java, JDBC and MySQL Types
Mybatis源代碼分析之類型轉(zhuǎn)換

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市颖对,隨后出現(xiàn)的幾起案子捻撑,更是在濱河造成了極大的恐慌,老刑警劉巖缤底,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顾患,死亡現(xiàn)場離奇詭異,居然都是意外死亡个唧,警方通過查閱死者的電腦和手機(jī)江解,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徙歼,“玉大人犁河,你說我怎么就攤上這事鳖枕。” “怎么了桨螺?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵宾符,是天一觀的道長。 經(jīng)常有香客問我灭翔,道長魏烫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任肝箱,我火速辦了婚禮哄褒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘煌张。我一直安慰自己读处,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布唱矛。 她就那樣靜靜地躺著,像睡著了一般井辜。 火紅的嫁衣襯著肌膚如雪绎谦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天粥脚,我揣著相機(jī)與錄音窃肠,去河邊找鬼。 笑死刷允,一個胖子當(dāng)著我的面吹牛冤留,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播树灶,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼纤怒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了天通?” 一聲冷哼從身側(cè)響起泊窘,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎像寒,沒想到半個月后烘豹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诺祸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年携悯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筷笨。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡憔鬼,死狀恐怖龟劲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情逊彭,我是刑警寧澤咸灿,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站侮叮,受9級特大地震影響避矢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜囊榜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一审胸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧卸勺,春花似錦砂沛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至悟狱,卻和暖如春静浴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挤渐。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工苹享, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浴麻。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓得问,卻偏偏與公主長得像,于是被迫代替她去往敵國和親软免。 傳聞我的和親對象是個殘疾皇子宫纬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容