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



https://blog.csdn.net/zhangzz1127/article/details/10251701

    最近在学习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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值