mysqlbateis generator 當遇到tinyint 生成轉化bool 解決方法


當遇到tyint 生成轉化bool  類型問題很惡心,記錄一下解決方法

一、

TinyInt轉換規則

JAVA數據類型 和 MYSQL的數據類型轉換,要注意tinyInt 類型,且存儲長度為1的情況。

MYSQL官方的JDBC文檔定義轉換規則如下:

MySQL Types to Java Types for ResultSet.getObject():

MySQL Type Name
Return value of  GetColumnClassName
Returned as Java Class
TINYINT TINYINT

java.lang.Boolean if the configuration property tinyInt1isBit is set to true(the default) and the storage size is 1, or java.lang.Integer if not.

翻譯:

如果tinyInt1isBit =true(默認),且tinyInt存儲長度為1 ,則轉為java.lang.Boolean 。

否則轉為java.lang.Integer。

()

注意 ,是ResultSet.getObject() 方法

參考文檔:https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-type-conversions.html

 

修復方法

 

1、tinyInt(1) 只用來代表Boolean含義的字段,且0代表False,1代表True。如果要存儲多個數值,則定義為tinyInt(N), N>1。例如 tinyInt(2)

 

2、JDBC的URL增加 tinyInt1isBit=false參數,注意參數名區分大小寫,否則不生效

jdbc:mysql://${ucmha.proxy1_2.host}/${db.mysql.db}?tinyInt1isBit=false

建議雙管齊下,以防新人接手不知道這個規則誤踩坑。

二、按官方建議的類型處理

 

本文講述了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較好。

完結

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM