mybatis中oracle转mysql
刚来公司实习,遇到的第一个任务就是这个,简单记录一下思路过程。人菜的很,没啥参考价值。
测试时:
将现有的oracle库转为mysql: 用的navicat自带数据传输功能,简单粗暴
出现的问题:
1.原本在oracle中 number类型的字段转为了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 jdbctype与oracle、mysql数据类型对应列表。
我这里具体操作为将所有numeric改为bigint,
jdbctype="clob" 改为varchar。
5 在本来的oracle中有user表,因为与关键字冲突的原因,在mapper中写为”user”,mysql中需要将双引号去掉。
6 mysql的substr不能加双引号,而且是从1开始(oracle是从0开始)。
2018.12.21
项目还未结束,还会更新。。
注:在实际操作中会遇到很多问题,多将代码复制到可视化工具里运行一下看看。
上一篇: js数组去重(最优方法)笔记
下一篇: 苹果通讯录怎么备份,掌握这个方法轻松备份
推荐阅读
-
【转】MySQL中GRANT权限的时分特殊字符转义
-
MySQL中实现插入或更新操作(类似Oracle的merge语句)
-
MySQL中实现插入或更新操作(类似Oracle的merge语句)
-
mybatis foreach批量插入数据:Oracle与MySQL区别介绍
-
mybatis foreach批量插入数据:Oracle与MySQL区别介绍
-
MySQL中浮点型转字符型可能会遇的问题详解
-
Oracle、mysql和sqlserver数据库中对于事务的不同理解
-
Oracle中实现MySQL show index from table命令SQL脚本分享
-
MyBatis在Oracle中插入数据并返回主键的问题解决
-
非空校验在oracle和mysql中的用法