数据库数值类型对应Integer还是int
2013-08-24 10:23
316 查看
最近在学习Hibernate,数据库是Oracle,一开始将Number类型映射为int。我一直都知道基本数据类型作为类的成员使用时有默认值,因为最初设计时我对每一个int的属性都有赋值,所以就没去处理Java给定int的默认值。但是,由于业务的改变,在首次存入数据库时某些int属性并没有赋值,于是默认值就开始污染数据库了。
下面详细说明下,当基本数据类型定义的变量作为类的成员使用时,Java会确保给定默认值,以保证这些成员变量得到初始化,以防止产生程序错误。但是,这些初始值对程序来说,可能不正确,甚至是不合法的,比如在我这个工程的业务中默认值0就非法。如果一定要使用基本数据类型,最好明确地对变量进行初始化。在对应数据库中的数值类型时,个人强烈建议使用Integer!不能因为一时的想法就去偷懒,而留下安全隐患。
基本成员默认值如下:
顺便附上Mysql Oracle Java数据类型对照表
下面详细说明下,当基本数据类型定义的变量作为类的成员使用时,Java会确保给定默认值,以保证这些成员变量得到初始化,以防止产生程序错误。但是,这些初始值对程序来说,可能不正确,甚至是不合法的,比如在我这个工程的业务中默认值0就非法。如果一定要使用基本数据类型,最好明确地对变量进行初始化。在对应数据库中的数值类型时,个人强烈建议使用Integer!不能因为一时的想法就去偷懒,而留下安全隐患。
基本成员默认值如下:
基本类型 | 默认值 |
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 |
相关文章推荐
- pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等
- 为什么数据库表的int类型字段映射到实体类中要使用Integer类型,而不是int类型?
- C#程序中从数据库取数据时需注意数据类型之间的对应,int16\int32\int64
- java 转换int类型数值到对应的金额大写
- C#程序中从数据库取数据时需注意数据类型之间的对应,int16\int32\int64
- Java中int和Integer的区别:int 是基本类型,直接存数值 ;integer是对象,用一个引用指向这个对象
- C#数据类型对应数据库字段类型
- 解决Entity Framework(EF) 使用时,数据库结构对应,但EF还是提示要删除数据库的问题
- PD与数据库对应类型
- java中常见数据库字段类型与java.sql.Types的对应
- 将int类型大于255的数值转换为十六进制字符串
- Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应
- Android 中使用IDE为Android Studio时候,后台类型从double 改成 int,但是客户端还是显示double问题(JAVA修改Model类型,但是无效)
- java.sql.Types,数据库字段类型,java数据类型的对应关系
- Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应
- 基本数据类型int 和封装类integer的区别
- MSSQL数据库和C#数据类型的对应关系
- C/C++中int/long/float/double数值类型与字符串互相转换[总结]
- java,hibernate和数据库对应的数据类型
- EDIT Control控件,对应的变量为 int类型,输入为非法字符时怎么判断