基于mysql的shiro项目转oracle数据库

软件老王

共 1061字,需浏览 3分钟

 ·

2021-04-19 02:15

1、问题说明

改造以前的一个shiro项目,以前数据库用的mysql,要更改成oracle,记录下,希望能帮到有需要的朋友。

2、解决方案

因为数据库中表结构,也就6个张表(5个权限表+一个日志表),原方案是想根据数据库字段,转到pownerdesigner中,然后再转出来,后来发现太麻烦放弃了。

2.1 使用navicat premium

(1)通过navicat premimum 连接oracle数据库。

1b50fd8df3dd326a0a3dc780fc69d661.webp

(2) 选中数据库,右键选中转储SQL文件,然后选择仅结构,就能导出oracle建表sql了。

77ddd08bc53311c68f8e5e098b5f00ee.webp

2.2 oracle sql 与mysql的不同点

(1)cancat函数,连接字符串。

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中执行

报错信息:

6fd377bd2178b892483f1c7e1c1b2f05.webp

网上说明:

ea9908c71a3f89decd16c4bac52836c5.webp

软件老王真实使用情况,oracle中多个concat嵌套:

f2e593f515df558395760ed49fdfb386.webp

mybatis中使用:

fa7e052b1ad87727b19d81d20e377ea4.webp

(2)oracle中不能执行insert values插入多条记录。

7f59cfad96d467b0506d191fa753591f.webp

(3)通过navivat或者pownerdesiner导出的oracle建表语句,需要把双引号或者单引号替换为空,否则会出现大小写问题,导致一些不必要的问题。

(4)给oracle中表字段设置默认值

导出的后默认值可能会没了,假如没有了,需要设置下。

如下:alter table 表名称 modify 字段名 default 具体值;

例如:alter table sys_user modify status default 1;

(5)老shiro项目中,没有用到自增主键,用的逻辑主键,所以没有主键问题,假如用到mysql项目中用到自增主键的朋友,还是有些问题的,mysql可以直接设置自增主键,oracle中需要新建sequence。


更多信息请关注公众号:「软件老王」,关注不迷路,软件老王和他的IT朋友们,分享一些他们的技术见解和生活故事。


浏览 37
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报