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
项目还未结束,还会更新。。
注:在实际操作中会遇到很多问题,多将代码复制到可视化工具里运行一下看看。
mybatis中oracle转mysql的更多相关文章
- mybatis中Oracle及mysql插入时自动生成主键以及返回主键
mysql的方式: 方式一: useGeneratedKeys="true" keyProperty="id" 方式二: <selectKey keyPr ...
- MyBatis之Oracle、Mysql批量插入
Mybatis中Dao层 public interface UsersMapper { public void insertEntitys(List<UserEntity> users); ...
- mybatis中Oracle分页语句的写法
最近一段时间使用oracle数据库查询分页, 用的是springboot. Oracle数据库中没有像mysql中limit的写法, 只能换其他方式写. 考虑到oracle中的ROWNUM变量, 使用 ...
- hibernate4中oracle,sqlserver,mysql数据库的sql方言配置(SQL Dialects)
hibernate4中oracle,mysql,sqlserver数据库的sql方言配置(SQL Dialects) 数据库类型 Hibernate sql方言 DB2 org.hibernate.d ...
- Mybatis 针对ORACLE和MYSQL的批量插入与多参数批量删除
今天利用Mybatis的<for each>标签做oracle的批量插入数据时,发现和MySQL数据库有区别.在此记录下,以防之后再踩坑. 一.批量插入: 1.controller: /* ...
- springboot + mybatis 支持oracle和mysql切换含源码
1.springboot 启动类加入bean 如下 // DatabaseIdProvider元素主要是为了支持不同的数据库@Beanpublic DatabaseIdProvider getData ...
- mybatis中oracle in>1000的处理
oracle数据库中,如果你使用in,然后括号对应的是一个子查询,当查询出来的结果>1000的时候就会报错. 这个是数据库的规定,我们无法改变它. 如何解决这个问题呢? 现在我看到了三种解决方式 ...
- Mybatis在oracle、mysql、db2、sql server的like模糊查询
<!-- oracle --> <select id="searchUserBySearchName" parameterType="java.lang ...
- mybatis中oracle实现分页效果
首先当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致 ...
随机推荐
- python函数(四)
一.函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pasc ...
- ThreadLocal 开启事务
1.ThreadLocal该类提供了线程局部变量 2.分析原理: ThreadLocal内部有一个Map.Map的key是当前线程对象,value是一个Object对象. 模拟该类: public c ...
- HDU 3829——Cat VS Dog——————【最大独立集】
Cat VS Dog Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit S ...
- JavaFX--第3天窗口布局
1.windows之间的交互 2.关闭程序 3.布局镶嵌 1.windows之间的交互 我们要实现“确定”.“取消”之类的功能:就像我们平时使用Word的时候要关闭会提示要不要保存的信息. 步骤如下: ...
- 为什么地址栏的快捷键是Alt D
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:为什么地址栏的快捷键是Alt D.
- 三、oracle 表空间
SQL> --清除屏幕信息 SQL> clear screen SQL> --查看表空间 SQL> select * from v$tablespace; SQL> -- ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(8)、关于ArcGIS Android开发的未来(“Quartz”版Beta)
1.前言 今天再一次在官网看到了ArcGIS Runtime SDK for Android下一个版本“Quartz”版的更新资料,它将是一个非常重要的更新,包括API接口的重构和开发思路的调整.具体 ...
- python列表生成式、列表推导式
运用列表生成式,可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁. 格式 [x for x in 内容] [x for x in 内容 if 条件] 1:要把生成的元素 ...
- java之Socket传递图片
客户端: package client; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ...
- System Center Configuration Manager 2016 配置安装篇(Part3)
SCCM 2016 配置管理系列(Part 1- 4) 介绍AD01上配置了Active Directory域服务(ADDS),然后将Configuration Manager服务器(CM16)加入到 ...