MySql字段类型对应Java实体类型
MySQL Connector/J 对于 MySql 数据类型和 Java 数据类型之间的转换是很灵活的。
一般来讲,任何 MySql 数据类型都可以被转换为一个 java.lang.String,
任何 MySql 数字类型都可以被转换为任何一种 Java 数字类型
(当然这样也可能出一些四舍五入,溢出,精度丢失之类的问题)。
基础类型与包装类型
a)
如果你的数据库字段是允许为空的,使用包装类。
如果不允许为空,使用包装的时候,如果你往数据库插入null值,此时就会抛出异常。
然后你就可以对异常进行捕获并处理。
b)
使用基本数据类型的时候,如果字段是NULL,那么JDBC会返回0,但是这里会有一个问题。
有可能0在你的业务逻辑代表着特定含义,这时候就可能出现一些意想不到的后果。
总结:在项目中去使用包装类型而不是基本数据类型,这样可以使你编写代码更简单,
除非有人给你一个更好的理由去使用基本数据类型或者你的上头要求一定要使用基本数据类型。
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 |