https://blog.csdn.net/zhangzz1127/article/details/10251701
最近在学习Hibernate,数据库是Oracle,一开始将Number类型映射为int。我一直都知道基本数据类型作为类的成员使用时有默认值,因为最初设计时我对每一个int的属性都有赋值,所以就没去处理Java给定int的默认值。但是,由于业务的改变,在首次存入数据库时某些int属性并没有赋值,于是默认值就开始污染数据库了。
基本类型 | 默认值 |
boolean | false |
char | '\u0000'(null) |
byte | (byte)0 |
short | 0 |
int | 0 |
long | 0L |
float | o.of |
double | o.0d |
Mysql | Oracle | Java |
BIGINT | NUMBER(19,0) | java.lang.Long |
BIT | RAW | byte[] |
BLOB | BLOB RAW | byte[] |
CHAR | CHAR | java.lang.String |
DATE | DATE | java.sql.Date |
DATETIME | DATE | java.sql.Timestamp |
DECIMAL | FLOAT (24) | java.math.BigDecimal |
DOUBLE | FLOAT (24) | java.lang.Double |
DOUBLE PRECISION | FLOAT (24) | java.lang.Double |
ENUM | VARCHAR2 | java.lang.String |
FLOAT | FLOAT | java.lang.Float |
INT | NUMBER(10,0) | java.lang.Integer |
INTEGER | NUMBER(10,0) | java.lang.Integer |
LONGBLOB | BLOB RAW | byte[] |
LONGTEXT | CLOB RAW | java.lang.String |
MEDIUMBLOB | BLOB RAW | byte[] |
MEDIUMINT | NUMBER(7,0) | java.lang.Integer |
MEDIUMTEXT | CLOB RAW | java.lang.String |
NUMERIC | NUMBER | |
REAL | FLOAT (24) | |
SET | VARCHAR2 | java.lang.String |
SMALLINT | NUMBER(5,0) | java.lang.Integer |
TEXT | VARCHAR2 CLOB | java.lang.String |
TIME | DATE | java.sql.Time |
TIMESTAMP | DATE | java.sql.Timestamp |
TINYBLOB | RAW | byte[] |
TINYINT | NUMBER(3,0) | java.lang.Boolean |
TINYTEXT | VARCHAR2 | java.lang.String |
VARCHAR | VARCHAR2 CLOB | java.lang.String |
YEAR | NUMBER | java.sql.Date |