基于mysql的shiro项目转oracle数据库
1、问题说明
改造以前的一个shiro项目,以前数据库用的mysql,要更改成oracle,记录下,希望能帮到有需要的朋友。
2、解决方案
因为数据库中表结构,也就6个张表(5个权限表+一个日志表),原方案是想根据数据库字段,转到pownerdesigner中,然后再转出来,后来发现太麻烦放弃了。
2.1 使用navicat premium
(1)通过navicat premimum 连接oracle数据库。
(2) 选中数据库,右键选中转储SQL文件,然后选择仅结构,就能导出oracle建表sql了。
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中执行
报错信息:
网上说明:
软件老王真实使用情况,oracle中多个concat嵌套:
mybatis中使用:
(2)oracle中不能执行insert values插入多条记录。
(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朋友们,分享一些他们的技术见解和生活故事。