Documentation Home
MySQL Connector/J 8.0 Developer Guide
Related Documentation Download this Manual
PDF (US Ltr) - 0.8Mb
PDF (A4) - 0.8Mb


MySQL Connector/J 8.0 Developer Guide  /  Connector/J Reference  /  Java, JDBC, and MySQL Types

6.5 Java, JDBC, and MySQL Types

MySQL Connector/J is flexible in the way it handles conversions between MySQL data types and Java data types.

In general, any MySQL data type can be converted to a java.lang.String, and any numeric type can be converted to any of the Java numeric types, although round-off, overflow, or loss of precision may occur.

Connector/J issues warnings or throws DataTruncation exceptions as is required by the JDBC specification, unless the connection was configured not to do so by using the property jdbcCompliantTruncation and setting it to false.

The conversions that are always guaranteed to work are listed in the following table. The first column lists one or more MySQL data types, and the second column lists one or more Java types to which the MySQL types can be converted.

Table 6.19 Possible Conversions Between MySQL and Java Data Types

These MySQL Data Types Can always be converted to these Java types
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

Note

Round-off, overflow or loss of precision may occur if you choose a Java numeric data type that has less precision or capacity than the MySQL data type you are converting to/from.

The ResultSet.getObject() method uses the type conversions between MySQL and Java types, following the JDBC specification where appropriate. The values returned by ResultSetMetaData.GetColumnTypeName()and ResultSetMetaData.GetColumnClassName() are shown in the table below. For more information on the JDBC types, see the reference on the java.sql.Types class.

Table 6.20 MySQL Types and Return Values for ResultSetMetaData.GetColumnTypeName()and ResultSetMetaData.GetColumnClassName()

MySQL Type Name Return value of GetColumnTypeName Return value of GetColumnClassName
BIT(1) BIT java.lang.Boolean
BIT( > 1) BIT byte[]
TINYINT(1) SIGNED, BOOLEAN

If tinyInt1isBit=true and transformedBitIsBoolean=false: BIT

If tinyInt1isBit=true and transformedBitIsBoolean=true: BOOLEAN

If tinyInt1isBit=false: TINYINT

If tinyInt1isBit=true and transformedBitIsBoolean=false: java.lang.Boolean

If tinyInt1isBit=true and transformedBitIsBoolean=true: java.lang.Boolean

If tinyInt1isBit=false: java.lang.Integer

TINYINT( > 1) SIGNED TINYINT java.lang.Integer
TINYINT( any ) UNSIGNED TINYINT UNSIGNED java.lang.Integer
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)] INTEGER java.lang.Integer
INT,INTEGER[(M)] UNSIGNED INTEGER UNSIGNED java.lang.Long
BIGINT[(M)] BIGINT java.lang.Long
BIGINT[(M)] UNSIGNED BIGINT UNSIGNED java.math.BigInteger
FLOAT[(M,D)] FLOAT java.lang.Float
DOUBLE[(M,B)] [UNSIGNED] DOUBLE java.lang.Double (regardless of whether it is UNSIGNED or not)
DECIMAL[(M[,D])] [UNSIGNED] DECIMAL java.math.BigDecimal (regardless of whether it is UNSIGNED or not)
DATE DATE java.sql.Date
DATETIME DATETIME java.time.LocalDateTime
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.Date with the date set to January 1st, at midnight.
CHAR(M) CHAR java.lang.String
VARCHAR(M) VARCHAR java.lang.String
BINARY(M), CHAR(M) BINARY BINARY byte[]
VARBINARY(M), VARCHAR(M) BINARY VARBINARY byte[]
BLOB BLOB byte[]
TINYBLOB TINYBLOB byte[]
MEDIUMBLOB MEDIUMBLOB byte[]
LONGBLOB LONGBLOB byte[]
TEXT TEXT java.lang.String
TINYTEXT TINYTEXT java.lang.String
MEDIUMTEXT MEDIUMTEXT java.lang.String
LONGTEXT LONGTEXT java.lang.String
JSON JSON java.lang.String
GEOMETRY GEOMETRY byte[]
ENUM('value1','value2',...) CHAR java.lang.String
SET('value1','value2',...) CHAR java.lang.String