刚来公司实习,遇到的第一个任务就是这个,简单记录一下思路过程。人菜的很,没啥参考价值。

测试时:

将现有的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的更多相关文章

  1. mybatis中Oracle及mysql插入时自动生成主键以及返回主键

    mysql的方式: 方式一: useGeneratedKeys="true" keyProperty="id" 方式二: <selectKey keyPr ...

  2. MyBatis之Oracle、Mysql批量插入

    Mybatis中Dao层 public interface UsersMapper { public void insertEntitys(List<UserEntity> users); ...

  3. mybatis中Oracle分页语句的写法

    最近一段时间使用oracle数据库查询分页, 用的是springboot. Oracle数据库中没有像mysql中limit的写法, 只能换其他方式写. 考虑到oracle中的ROWNUM变量, 使用 ...

  4. hibernate4中oracle,sqlserver,mysql数据库的sql方言配置(SQL Dialects)

    hibernate4中oracle,mysql,sqlserver数据库的sql方言配置(SQL Dialects) 数据库类型 Hibernate sql方言 DB2 org.hibernate.d ...

  5. Mybatis 针对ORACLE和MYSQL的批量插入与多参数批量删除

    今天利用Mybatis的<for each>标签做oracle的批量插入数据时,发现和MySQL数据库有区别.在此记录下,以防之后再踩坑. 一.批量插入: 1.controller: /* ...

  6. springboot + mybatis 支持oracle和mysql切换含源码

    1.springboot 启动类加入bean 如下 // DatabaseIdProvider元素主要是为了支持不同的数据库@Beanpublic DatabaseIdProvider getData ...

  7. mybatis中oracle in>1000的处理

    oracle数据库中,如果你使用in,然后括号对应的是一个子查询,当查询出来的结果>1000的时候就会报错. 这个是数据库的规定,我们无法改变它. 如何解决这个问题呢? 现在我看到了三种解决方式 ...

  8. Mybatis在oracle、mysql、db2、sql server的like模糊查询

    <!-- oracle --> <select id="searchUserBySearchName" parameterType="java.lang ...

  9. mybatis中oracle实现分页效果

    首先当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致 ...

随机推荐

  1. 为什么vue+webpack需要用到node,如何部署项目到服务器?

    第一部分 之前一直不太理解为什么要使用vue+webapck,还有在使用了vue-cli之后会用到后台,即vue-cli自动帮我们安装了express服务器,在本地服务器上运行,因为我们希望可以模拟在 ...

  2. 案例53-crm练习修改客户功能实现

    1 CustomerAction 完整代码: package www.test.web.action; import java.io.File; import org.apache.commons.l ...

  3. 《nginx 二》深入理解nginx的各项配置

    Nginx应用场景 1.http服务器.Nginx是一个http服务可以独立提供http服务.可以做网页静态服务器. 2.虚拟主机.可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机. 3. ...

  4. 用 JS 做一个数独游戏(二)

    用 JS 做一个数独游戏(二) 在 上一篇博客 中,我们通过 Node 运行了我们的 JavaScript 代码,在控制台中打印出来生成好的数独终盘.为了让我们的数独游戏能有良好的体验,这篇博客将会为 ...

  5. [Java][Servlet] Cannot call sendRedirect() after the response has been committed

    做一个Login Demo的时候,写了如下代码: protected void doPost(HttpServletRequest request, HttpServletResponse respo ...

  6. git 突破大文件上传限制

    1.安装 lfs: git lfs install 2.跟踪大文件:git lfs track "file.suffix" 3.添加配置文件:git add .gitattribu ...

  7. HTML中6种空白空格

    HTML提供了5种空格实体(space entity),它们拥有不同的宽度,非断行空格( )是常规空格的宽度,可运行于所有主流浏览器.其他几种空格(       ‌‍)在不同浏览器中宽度各异.     ...

  8. 切图让我进步!关于white-space属性的组合拳

    菜鸟一枚,没有大神的风骚,只有一点在练习中的心得,今天获得的知识是关于white-space属性.overflow属性还有text-overflow属性的组合使用,废话不多说浪费时间,进入今天的正题! ...

  9. Thinkphp 出现 “_CACHE_WRITE_ERROR” 错误的可能解决办法

    有可能是老毛病: Cache文件夹和里面的文件,php没有权限 解决办法: chmod -R 777 /.............../www/Cache

  10. Cocos2d-x下HTTP网络通讯

    引入头文件: #include "cocos-ext.h" 添加下载按钮: CCMenuItemImage *pCloseItem = CCMenuItemImage::creat ...