MySQL Connector/J( MySQL官方JDBC驱动程序)在处理MySQL数据类型和Java数据类型之间的转换方面非常灵活。
通常,任何MySQL数据类型都可以转换为java.lang.String。可以将字符串和任何数字类型转换为任何Java数字类型,尽管可能会发生舍入、溢出或精度损失。
从Connector/J 3.1.0开始,JDBC驱动程序会发出警告或引发JDBC规范所要求的DataTruncation异常(数据截断异常),除非通过使用jdbcCompliantTruncation属性并将其设置为false来将连接配置为不这样做。
MySQL和Java类型之间始终保证有效的转换
MySQL类型 | 可转换的Java类型 |
---|---|
char, varchar, blob, text, enum, 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类型 | 用途 |
---|---|---|
tinyint | 如果配置属性 tinyInt1isBit 设置为 true (默认)并且存储大小为1,则为 java.lang.Boolean ,否则是 java.lang.Integer。 | |
smallint | java.lang.Integer(不管它是否是unsigned ) | |
mediumint | java.lang.Integer(不管它是否是unsigned ) | |
int | java.lang.Integer, 如果是 unsigned 则是 java.lang.Long | 整数 |
integer | java.lang.Integer, 如果是 unsigned 则是 java.lang.Long | |
bigint | java.lang.Long, 如果是 unsigned 则是 java.math.BigInteger | |
bit(1) | java.lang.Boolean | |
bit(>1) | byte[] | |
real | Java | |
double | java.lang.Double | |
float | java.lang.Float | |
decimal | java.math.BigDecimal | 金额 |
numeric | Java | |
char | java.lang.String (除非列的字符集是BINARY,否则返回byte[]。) | |
varchar | java.lang.String (除非列的字符集是BINARY,否则返回byte[]。) | |
date | java.sql.Date | 日期 |
time | java.sql.Time | 时间 HH:MM:SS |
year | 如果 yearIsDateType 配置属性设置为 false,则返回的对象类型为 java.sql.Short。 如果设置为 true (默认),则返回的对象类型为 java.sql.Date,日期设置为1月1日0:00点。 | |
timestamp | java.sql.Timestamp | 时间戳 YYYY-MM-DD HH:MM:SS |
datetime | java.sql.Timestamp | YYYY-MM-DD HH:MM:SS |
tinyblob | byte[] | |
blob | byte[] | |
mediumblob | byte[] | |
longblob | byte[] | |
tinytext | java.lang.String | |
text | java.lang.String | |
mediumtext | java.lang.String | |
longtext | java.lang.String | |
enum | java.lang.String | |
set | java.lang.String | |
binary | byte[] | |
varbinary | byte[] | |
point | 位图 GIS地理坐标 | |
linestring | 线图 | |
polygon | 多边形 | |
geometry | 几何图形 | |
multipoint | 复合位图 | |
multilinestring | 复合线图 | |
multipolygon | 复合多边形 | |
geometrycollection | 几何集合 |