MySQL 基础教程

MySQL 高级教程

MySQL SQL 语句

MySQL 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/mysql-note-mysql-java-datatype-map.html

MySQL 数据类型与 Java 数据类型对应一览表

MySQL 笔记 MySQL 笔记


MySQL Connector/J 在处理 MySQL 数据类型和 Java 数据类型之间转换方面是非常灵活的。通常,任何 MySQL 数据类型都可以转换为 Java 的 java.lang.String,并且任何数字类型都可以转换为任何 Java 数字类型(当然这样也可能出一些四舍五入,溢出,精度丢失之类的问题)。

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

如果选择的 Java 数值数据类型的精度或容量低于要转换为的 MySQL 数据类型,则可能会出现四舍五入,溢出或精度损失之类的问题。

MySQL 数据类型和 Java 数据类型转换表

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;无符的话是 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

官方参考连接:https://dev.mysql.com/doc/connector-j/en/connector-j-reference-type-conversions.html