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
Noteround-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
NoteBefore MySQL Connector/J 3.1.3, BIGINT UNSIGNED was mapped to java.math.BigDecimal. |