一个项目实例:https://github.com/akeenhao/VBlog_Oracle
博客项目:账户管理、文章发表、权限管理、图表生成等。数据库原来是mysql,我改成Oracle。
1.sql语句方面
(0)建表:mysql:DROP TABLE IF EXISTS article ; oracle 会报错,可以直接drop或create table。
(1) 主键生成策略:mysql 在主键列生成语句上加AUTO_INCREMENT;
Oracle不支持,需要单独处理:例如使用sequence或其他。
(1)特殊字符 `:mysql表名等都用``引起来,Oracle不需要,所以需要删掉`。
(2)数据类型 int bigint 等。需要转成number。例如: int(11)->number(11)
数据类型:varchar。需要转成 varchar2
数据类型:text。需要转成 clob
数据类型:datetime。需要转成 TIMESTAMP(6)
(3)语法 index primary key等
(4)备注 comment:mysql的备注写在每个字段的后面,
例如state number(11) DEFAULT NULL COMMENT '0表示草稿箱,1表示已发表,2表示已删除',
Oracle需要改成单独的备注:comment on column TT_****.state is '0表示草稿箱,1表示已发表,2表示已删除';
(5)主键自增 auto increment
(6)唯一索引等
(7)主外键语句:
主键:
mysql:在字段创建时加命令 PRIMARY KEY ( id ),
oracle:alter table TM_A add constraint PK_TE primary key (ID)
外键:
mysql:CONSTRAINT article_ibfk_1 FOREIGN KEY ( cid ) REFERENCES category ( id )
Oracle:alter table table_** add constraint fk_g_id foreign key (ALA_ID) references tm_aroup (ID);
(9) 特殊字符:user uid 谨慎使用
(10)插入数据:& Oracle认为&size是变量,如果有字符串里含有&,则可以用‘fdasfd‘||’&‘||’fdsaf'来转换。
2.程序方面
(1)主键生成策略 用户输入、自动、uuid等
(2)使用mybatis xml文件修改 :遍历的语法<foreach>要从代码里进行,sql里不能活性使用。
(3)一个mybatismap里的sql,不能含有多个sql块。
(4)主键自增实现,用trigger触发器。
暂时这些。后续再有再补充。