Java开发在操作数据库数据时,经常需要注意类型的匹配。之前我就好几次碰到这类问题:如MySql数据库中的DECIMAL类型,我误以为对应于Java数据类型的double类型,结果毫无疑问,报错了!
需要注意的是MySql中的boolean类型相当于tinyint(1:true;0:false),即存储boolean类型的数据时,对应的Java bean应使用boolean定义。而blob一般将文件以二进制的方式存储,所以在Java中用byte[]定义。
为防止记忆被清除,于是乎,一表以记之:
类型名称 |
显示长度 |
数据库类型 |
JAVA类型 |
VARCHAR |
L+N |
VARCHAR |
java.lang.String |
CHAR |
N |
CHAR |
java.lang.String |
BLOB |
L+N |
BLOB |
java.lang.byte[] |
TEXT |
65535 |
VARCHAR |
java.lang.String |
INTEGER |
4 |
INTEGER UNSIGNED |
java.lang.Long |
TINYINT |
3 |
TINYINT UNSIGNED |
java.lang.Integer |
SMALLINT |
5 |
SMALLINT UNSIGNED |
java.lang.Integer |
MEDIUMINT |
8 |
MEDIUMINT UNSIGNED |
java.lang.Integer |
BIT |
1 |
BIT |
java.lang.Boolean |
BIGINT |
20 |
BIGINT UNSIGNED |
java.math.BigInteger |
FLOAT |
4+8 |
FLOAT |
java.lang.Float |
DOUBLE |
22 |
DOUBLE |
java.lang.Double |
DECIMAL |
11 |
DECIMAL |
java.math.BigDecimal |
BOOLEAN |
1 |
同TINYINT |
java.lang.Boolean |
DATE |
10 |
DATE |
java.sql.Date |
TIME |
8 |
TIME |
java.sql.Time |
DATETIME |
19 |
DATETIME |
java.sql.Timestamp |
TIMESTAMP |
19 |
TIMESTAMP |
java.sql.Timestamp |