Type Conversions Supported by MySQL Connector/J
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 numerical type can be converted to any of the Java numerical types, although round-off, overflow, or loss of precision may occur.
The conversions that are always guaranteed to work are listed in the following table:
Table A.1. Conversion Table
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
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.
DATE, TIME, DATETIME, TIMESTAMP
java.lang.String, java.sql.Date, java.sql.Timestamp
Columns with an unsigned numeric type in MySQL are treated as the next 'larger' Java type that the signed variant of the MySQL type maps to:
Table A.2. Unsigned Types Mapping
MySQL Type
Corresponding Java Type
TINYINT UNSIGNED
java.lang.Integer
SMALLINT UNSIGNED
java.lang.Integer
MEDIUMINT UNSIGNED
java.lang.Long
INT UNSIGNED
java.lang.Long
BIGINT UNSIGNED
java.math.BigInteger
Note
Before MySQL Connector/J 3.1.3, BIGINT UNSIGNED was mapped to java.math.BigDecimal.