MyBatis+Oracle Date转String

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis+Oracle Date转String相关的知识,希望对你有一定的参考价值。

新公司领导让javaBean全是String 格式, 我在MyBatis中读取Oracle Date格式的字段时,自动映射成了
2014-03-20 00:00:00.0这样的格式了。 请问如何确定传来的值只有日期呢?
jdbcType 和 javaType我都试过。好像无效

数据库里面全部使用verchar2就可以了,将data全部转成String,两遍保证格式统一就可以了 参考技术A to_char(date,"yyyy-MM-dd") 参考技术B 无所谓了,你显示的时候只显示日期就行了。

mybatis中oracle转mysql

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

 

测试时:

将现有的oracle库转为mysql 用的Navicat自带数据传输功能,简单粗暴

 技术分享图片

出现的问题:

1.原本在oracleNUMBER类型的字段转为了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 JdbcTypeOracleMySql数据类型对应列表。

我这里具体操作为将所有NUMERIC改为BIGINT

jdbcType="CLOB" 改为varchar

5 在本来的oracle中有user表,因为与关键字冲突的原因,在mapper中写为”USER”,mysql中需要将双引号去掉。

6 mysqlsubstr不能加双引号,而且是从1开始(oracle是从0开始)。

 

2018.12.21 

项目还未结束,还会更新。。

注:在实际操作中会遇到很多问题,多将代码复制到可视化工具里运行一下看看。

以上是关于MyBatis+Oracle Date转String的主要内容,如果未能解决你的问题,请参考以下文章

mybatis中oracle转mysql

mybaties 和 oracle的to_date函数的问题

Mybatis之Oracle增删查改示例--转

Oracle date、char、number处理转换(转)

java string转化成date的问题

mybatis generator Date类型时间丢失