mybatis中oracle轉mysql


剛來公司實習,遇到的第一個任務就是這個,簡單記錄一下思路過程。人菜的很,沒啥參考價值。

 

測試時:

將現有的oracle庫轉為mysql 用的Navicat自帶數據傳輸功能,簡單粗暴

 

出現的問題:

1.原本在oracleNUMBER類型的字段轉為了decimal

(1)Oracle使用序列(SEQUENCE)實現的主鍵遞增,原本表主鍵是沒有AUTO_INCREMENT

(2)有些decimal類型的字段是主鍵。

(3)Decimal不能設置AUTO_INCREMENT

解決方法:

百度了一哈,解決方法分兩種:

1:不去管它,在mysql中用函數模擬序列實現主鍵遞增,在mapper中的序列稍作修改就可以了。

2:將decimal手動改為支持AUTO_INCREMENT的類型,刪除mapper中的序列。

因為筆者很菜,所有我這里選用了第二種辦法,將表中所有decimal字段改為bigint類 型(還挺麻煩的)。

 

因為目前用到的庫只有字符串和數字兩種類型,所以數據庫目前只做了以上修改。

 

修改mapper

主要注意以下幾點:

1 分頁查詢:用的插件,改改配置就行了。有些查詢直接寫在sql中,需手動改。

ROWNUM < '5' 改為 limit 5 ,同理取結果集的第一條時,使用limit 1

2 空字符串問題:Oracle中空字符串''就是null(也就是說,只有null,沒有空字符),而MySQL是區分null''的。所以改為

 

類似這樣子。

3 自增主鍵:直接刪去序列。

4 mapper中的數據類型做對應。

百度一下 Mybatis JdbcTypeOracleMySql數據類型對應列表。

我這里具體操作為將所有NUMERIC改為BIGINT

jdbcType="CLOB" 改為varchar

5 在本來的oracle中有user表,因為與關鍵字沖突的原因,在mapper中寫為”USER”,mysql中需要將雙引號去掉。

6 mysqlsubstr不能加雙引號,而且是從1開始(oracle是從0開始)。

 

2018.12.21 

項目還未結束,還會更新。。

注:在實際操作中會遇到很多問題,多將代碼復制到可視化工具里運行一下看看。


免責聲明!

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



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