1. 程式人生 > >Mybatis與資料庫的型別對應

Mybatis與資料庫的型別對應

    由於業務的改變,在首次存入資料庫時某些int屬性並沒有賦值,於是預設值就開始汙染資料庫了。

  下面詳細說明下,當基本資料型別定義的變數作為類的成員使用時,Java會確保給定預設值,以保證這些成員變數得到初始化,以防止產生程式錯誤。但是,這些初始值對程式來說,可能不正確,甚至是不合法的,比如在我這個工程的業務中預設值0就非法。如果一定要使用基本資料型別,最好明確地對變數進行初始化。在對應資料庫中的數值型別時,個人強烈建議使用Integer!不能因為一時的想法就去偷懶,而留下安全隱患。

基本成員預設值如下:

基本型別 預設值
boolean false
char '\u0000'(null)
byte (byte)0
short 0
int  0
long 0L
float o.of
double o.0d

      順便附上java實體屬性對應mysql和SQL Server 和Oracle 資料型別對應

1:Java資料型別與MySql資料型別對照表

型別名稱 顯示長度 資料庫型別 JAVA型別 JDBC型別索引(int)
VARCHAR L+N VARCHAR java.lang.String 12
CHAR N CHAR java.lang.String 1
BLOB L+N BLOB java.lang.byte[]
-4
TEXT 65535 VARCHAR java.lang.String -1
INTEGER 4 INTEGER UNSIGNED java.lang.Long 4
TINYINT 3 TINYINT UNSIGNED java.lang.Integer -6
SMALLINT 5 SMALLINT UNSIGNED java.lang.Integer 5
MEDIUMINT 8 MEDIUMINT UNSIGNED java.lang.Integer 4
BIT 1 BIT java.lang.Boolean -7
BIGINT
20 BIGINT UNSIGNED java.math.BigInteger -5
FLOAT 4+8 FLOAT java.lang.Float 7
DOUBLE 22 DOUBLE java.lang.Double 8
DECIMAL 11 DECIMAL java.math.BigDecimal 3
BOOLEAN 1 同TINYINT
ID 11 PK (INTEGER UNSIGNED) java.lang.Long 4
DATE 10 DATE java.sql.Date 91
TIME 8 TIME java.sql.Time 92
DATETIME 19 DATETIME java.sql.Timestamp 93
TIMESTAMP 19 TIMESTAMP java.sql.Timestamp 93
YEAR 4 YEAR java.sql.Date 91


*對於bolb,一般用於對圖片的資料庫儲存,原理是把圖片打成二進位制,然後進行的一種儲存方式,在java中對應byte[]陣列。

對於boolen型別,在mysql資料庫中,個人認為用int型別代替較好,對bit操作不是很方便,尤其是在具有web頁面開發的專案中,表示0/1,對應java型別的Integer較好。

2: sqlserver資料庫對應java中的資料型別

SQL Server 型別 JDBC 型別 (java.sql.Types) Java 語言型別

bigint

BIGINT

long

timestamp

binary

BINARY

byte[]

bit

BIT

boolean

char

CHAR

String

decimal

money

smallmoney

DECIMAL

java.math.BigDecimal

float

DOUBLE

double

int

INTEGER

int

image

varbinary(max)

LONGVARBINARY

byte[]

varchar(max)

text

LONGVARCHAR

String

nchar

CHAR

NCHAR (Java SE 6.0)

String

nvarchar

VARCHAR

NVARCHAR (Java SE 6.0)

String

nvarchar(max)

ntext

LONGVARCHAR

LONGNVARCHAR (Java SE 6.0)

String

numeric

NUMERIC

java.math.BigDecimal

real

REAL

float

smallint

SMALLINT

short

datetime

smalldatetime

TIMESTAMP

java.sql.Timestamp

varbinary

udt

VARBINARY

byte[]

varchar

VARCHAR

String

tinyint

TINYINT

short

uniqueidentifier

CHAR

String

xml

LONGVARCHAR

SQLXML (Java SE 6.0)

String

SQLXML

time

TIME (1)

java.sql.Time (1)

date

DATE

java.sql.Date

datetime2

TIMESTAMP

java.sql.Timestamp

datetimeoffset (2)

microsoft.sql.Types.DATETIMEOFFSET

microsoft.sql.DateTimeOffset

3:sqlserver和Oracle資料型別對應關係

SqlServer 2k轉換為Oracle 10g

列名 SqlServer資料型別 SqlServer長度 Oracle資料型別
column1 bigint 8 NUMBER(19)
column2 binary 50 RAW(50)
column3 bit 1 NUMBER(2)
column4 char 10 CHAR(10)
column5 datetime 8 DATE
column6 decimal 9 NUMBER(18)
column7 float 8 BINARY_DOUBLE
column8 image 16 BLOB
column9 int 4 NUMBER(10)
column10 money 8 NUMBER(19,4)
column11 nchar 10 NCHAR(10)
column12 ntext 16 NCLOB
column13 numeric 9 NUMBER(18)
column14 nvarchar 50 NVARCHAR2(50)
column15 real 4 BINARY_FLOAT
column16 smalldatetime 4 DATE
column17 smallint 2 NUMBER(5)
column18 smallmoney 4 NUMBER(10,4)
column19 sql_variant BLOB
column20 text 16 CLOB
column21 timestamp 8 RAW(8)
column22 tinyint 1 NUMBER(3)
column23 uniqueidentifier 16 BLOB
column24 varbinary 50 RAW(50)
column25 varchar 50 VARCHAR2(50)

Oracle 10g 轉換為SqlServer 2k

Oracle列名 Oracle資料型別 SqlServer列名 SqlServer資料型別 SqlServer資料長度
COLUMN1 BINARY_DOUBLE COLUMN1 float 8
COLUMN2 BINARY_FLOAT COLUMN2 real 4
COLUMN3 BLOB COLUMN3 image 16
COLUMN4 CLOB COLUMN4 ntext 16
COLUMN5 CHAR(10) COLUMN5 nchar 10
COLUMN6 DATE COLUMN6 datetime 8
COLUMN12 NUMBER COLUMN12 numeric 13
COLUMN13 NVARCHAR2(10) COLUMN13 nvarchar 10
COLUMN14 RAW(10) COLUMN14 varbinary 10
COLUMN15 TIMESP(6) COLUMN15 datetime 8
COLUMN16 TIMESP(6) WITH LOCAL TIME ZONE COLUMN16 datetime 8
COLUMN17 TIMESP(6) WITH TIME ZONE COLUMN17 datetime 8
COLUMN18 VARCHAR2(10) COLUMN18 nvarchar 10
COLUMN7 INTERVAL DAY(2) TO SECOND(6) COLUMN7 nvarchar 30
COLUMN8 INTERVAL YEAR(2) TO MONTH COLUMN8 nvarchar 14
COLUMN9 LONG COLUMN9 ntext 16
COLUMN10 LONG RAW COLUMN10 image 16
COLUMN11 NCLOB COLUMN11 ntext 16