MySQL Connector/J 對於 MySql 數據類型和 Java 數據類型之間的轉換是很靈活的。
一般來講,任何 MySql 數據類型都可以被轉換爲一個 java.lang.String,任何 MySql 數字類型都可以被轉換爲任何一種 Java 數字類型(當然這樣也可能出一些四捨五入,溢出,精度丟失之類的問題)。
MySql 數據類型 | 可以被轉換成的 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 |
ResultSet.getObject() 方法遵循 JDBC 規範對 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;無符的話是 java.lang.Long(C/J 3.1 或更早),或者 java.lang.Integer(C/J 5.0 或更晚) |
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 |
ET('value1','value2',...) | CHAR | java.lang.String |