Java 数据类型和 MySql 数据类型对应一览表

本文详细介绍了MySQLConnector/J如何实现MySQL数据类型到Java数据类型的转换,并提供了转换表。此外,还提到了某些数据类型的特殊处理方式及在实际应用中的注意事项。
MySQL Connector/J 对于 MySql 数据类型和 Java 数据类型之间的转换是很灵活的。
一般来讲,任何 MySql 数据类型都可以被转换为一个 java.lang.String,任何 MySql 数字类型都可以被转换为任何一种 Java 数字类型(当然这样也可能出一些四舍五入,溢出,精度丢失之类的问题)。
转换表
MySql 数据类型可以被转换成的 Java 类型
CHAR, VARCHAR, BLOB, TEXT, ENUM, and SETjava.lang.String, java.io.InputStream, java.io.Reader, java.sql.Blob, java.sql.Clob
FLOAT, REAL, DOUBLE PRECISION, NUMERIC, DECIMAL, TINYINT, SMALLINT, MEDIUMINT, INTEGER, BIGINTjava.lang.String, java.lang.Short, java.lang.Integer, java.lang.Long, java.lang.Double, java.math.BigDecimal
DATE, TIME, DATETIME, TIMESTAMPjava.lang.String, java.sql.Date, java.sql.Timestamp

ResultSet.getObject() 方法遵循 JDBC 规范对 MySql 和 Java 的类型进行转换。
ResultSet.getObject() 对 MySql 类型和 Java 类型转换表
MySql 类型名GetColumnClassName 返回值返回的 Java 类
BIT(1)(MySQL-5.0 新引入)BITjava.lang.Boolean
BIT(大于 1) (MySQL-5.0 新引入)BITbyte[]
TINYINTTINYINT如果 tinyInt1isBit 配置设置为 true(默认为 true),是 java.lang.Boolean,存储空间 为 1;否则是为 java.lang.Integer
BOOL, BOOLEANTINYINT参见 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)]FLOATjava.lang.Float
DOUBLE[(M,B)]DOUBLEjava.lang.Double
DECIMAL[(M[,D])]DECIMALjava.math.BigDecimal
DATEDATEjava.sql.Date
DATETIMEDATETIMEjava.sql.Timestamp
TIMESTAMP[(M)]TIMESTAMPjava.sql.Timestamp
TIMETIMEjava.sql.Time
YEAR[(2|4)]YEAR如果 yearIsDateType  配置设置为 false,返回的对象类型为 java.sql.Short;如果设置为 true(默认为 true),返回的对象类型是 java.sql.Date,其具体时间是为一月一日零时零分
CHAR(M)CHARjava.lang.String(除非该列字符集设置为 BINARY,那样返回 byte[])
VARCHAR(M) [BINARY]VARCHARjava.lang.String(除非该列字符集设置为 BINARY,那样返回 byte[])
BINARY(M)BINARYbyte[]
VARBINARY(M)VARBINARYbyte[]
TINYBLOBTINYBLOBbyte[]
TINYTEXTVARCHARjava.lang.String
BLOBBLOBbyte[]
TEXTVARCHARjava.lang.String
MEDIUMBLOBMEDIUMBLOBbyte[]
MEDIUMTEXTVARCHARjava.lang.String
LONGBLOBLONGBLOBbyte[]
LONGTEXTVARCHARjava.lang.String
ENUM('value1','value2',...)CHARjava.lang.String
ET('value1','value2',...)CHARjava.lang.String

原文链接: http://dev.mysql.com/doc/connector-j/en/connector-j-reference-type-conversions.html

 

补充:

对于boolean类型,在MySQL数据库中,个人认为用int类型代替较好,对bit操作不是很方便,尤其是在具有web页面开发的项目中,表示0/1,对应Java类型的Integer较好。
我的概念中,mysql中的text字段应该是没有长度限制的,但是今天事实告诉我,text类型的长度是有限制的。其中mysqltext类型有64K长度限制的
工作中由于邮件的长度超过了64k,Text已经不适用,我们换用了MEDIUMTEXT 他的长度为16777215 (2^24 - 1) 为256*64K=16M

 

转载于:https://www.cnblogs.com/gscq073240/articles/7070572.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值