基于mysql的shiro項目轉(zhuǎn)oracle數(shù)據(jù)庫
1、問題說明
改造以前的一個shiro項目,以前數(shù)據(jù)庫用的mysql,要更改成oracle,記錄下,希望能幫到有需要的朋友。
2、解決方案
因為數(shù)據(jù)庫中表結(jié)構(gòu),也就6個張表(5個權(quán)限表+一個日志表),原方案是想根據(jù)數(shù)據(jù)庫字段,轉(zhuǎn)到pownerdesigner中,然后再轉(zhuǎn)出來,后來發(fā)現(xiàn)太麻煩放棄了。
2.1 使用navicat premium
(1)通過navicat premimum 連接oracle數(shù)據(jù)庫。

(2) 選中數(shù)據(jù)庫,右鍵選中轉(zhuǎn)儲SQL文件,然后選擇僅結(jié)構(gòu),就能導(dǎo)出oracle建表sql了。

2.2 oracle sql 與mysql的不同點
(1)cancat函數(shù),連接字符串。
mysql中可以連接多個字符串;oracle只能連接兩個,需要連接多個的話,oracle中需要做嵌套。
mysql中:
SELECT count(0) FROM sys_user su_a LEFT JOIN sys_user su_b ON su_b.id = su_a.create_id LEFT JOIN sys_user su_c ON su_c.id = su_a.update_id WHERE su_a.deleted = 1 AND su_a.username LIKE concat('%', '老王', '%');
在oracle中執(zhí)行
報錯信息:

網(wǎng)上說明:

軟件老王真實使用情況,oracle中多個concat嵌套:

mybatis中使用:

(2)oracle中不能執(zhí)行insert values插入多條記錄。

(3)通過navivat或者pownerdesiner導(dǎo)出的oracle建表語句,需要把雙引號或者單引號替換為空,否則會出現(xiàn)大小寫問題,導(dǎo)致一些不必要的問題。
(4)給oracle中表字段設(shè)置默認(rèn)值
導(dǎo)出的后默認(rèn)值可能會沒了,假如沒有了,需要設(shè)置下。
如下:alter table 表名稱 modify 字段名 default 具體值;
例如:alter table sys_user modify status default 1;
(5)老shiro項目中,沒有用到自增主鍵,用的邏輯主鍵,所以沒有主鍵問題,假如用到mysql項目中用到自增主鍵的朋友,還是有些問題的,mysql可以直接設(shè)置自增主鍵,oracle中需要新建sequence。
更多信息請關(guān)注公眾號:「軟件老王」,關(guān)注不迷路,軟件老王和他的IT朋友們,分享一些他們的技術(shù)見解和生活故事。
