您的位置:首页 > 数据库

数据库数值类型对应Integer还是int

2013-08-24 10:23 316 查看
        最近在学习Hibernate,数据库是Oracle,一开始将Number类型映射为int。我一直都知道基本数据类型作为类的成员使用时有默认值,因为最初设计时我对每一个int的属性都有赋值,所以就没去处理Java给定int的默认值。但是,由于业务的改变,在首次存入数据库时某些int属性并没有赋值,于是默认值就开始污染数据库了。
        下面详细说明下,当基本数据类型定义的变量作为类的成员使用时,Java会确保给定默认值,以保证这些成员变量得到初始化,以防止产生程序错误。但是,这些初始值对程序来说,可能不正确,甚至是不合法的,比如在我这个工程的业务中默认值0就非法。如果一定要使用基本数据类型,最好明确地对变量进行初始化。在对应数据库中的数值类型时,个人强烈建议使用Integer!不能因为一时的想法就去偷懒,而留下安全隐患。
基本成员默认值如下:

基本类型默认值
booleanfalse
char'\u0000'(null)
byte(byte)0
short0
int 0
long0L
floato.of
doubleo.0d
顺便附上Mysql Oracle Java数据类型对照表

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 java 数据
相关文章推荐