别人那里抄的 https://blog.youkuaiyun.com/defonds/article/details/46681701
chatgpt转换了一下格式
MySQL Connector/J 数据类型转换
MySQL Connector/J 对于 MySQL 数据类型和 Java 数据类型之间的转换是非常灵活的。一般来讲,任何 MySQL 数据类型都可以被转换为一个 java.lang.String,任何 MySQL 数字类型都可以被转换为任何一种 Java 数字类型,尽管可能存在四舍五入、溢出或精度丢失等问题。
转换表
以下是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 |
ResultSet.getObject() 方法转换表
ResultSet.getObject() 方法遵循 JDBC 规范,进行 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 |
| SET(‘value1’,‘value2’,…) | CHAR | java.lang.String |
本文详细介绍了MySQLConnector/J在Java中的数据类型转换规则,包括MySQL与Java类型间的对应关系,以及ResultSet.getObject()方法的转换策略,特别关注了可能遇到的问题如精度和溢出。
1607

被折叠的 条评论
为什么被折叠?



