当前位置: 首页 > 科技观察

项目适配Oracle改造及SSL安全配置问题总结详解

时间:2023-03-21 23:08:30 科技观察

背景项目开发前期使用MySQL,后期需要适配Oracle。在总结适配过程和多库支持的时候,有几点是需要从开发初期考虑的。另外总结一下最近六个月开发过程中的一些技术问题。坑已经填完了,是时候把填坑的过程记录下来了,不然下次可能会踩到同样的坑。Oracle适配点表名长度限制,支持Oracle12C以下是需要考虑的30个字符的限制。Oracle关键字USER不能用作别名。与MySQL不同,Oracle有一个名为USER的特殊用户表。Oracle没有默认的转义符号。支持模糊查询时,需要手动编写查询语句指定ESCAPE字符。此时MyBatisPlus插件的模糊查询就帮不上忙了,所以还是需要自定义模糊查询SQL。好在MySQL和Oracle的ESCAPE语法是一样的,可以统一。另外,字符串连接函数CONCAT应该也是基于Oracle的,只能有两个参数。Oracle的字段长度,一个中文的长度是2,这点和MySQL不同。允许中文输入的可变长度字段需要自动扩展到MySQL的两倍长度。通过MyBatisPlus的全局配置jd??bc-type-for-null:'null'可以统一解决Oracle的null值插入或更新时的异常问题。Oracle区分大小写。SQL语法中注意小写是否真的是小写。如果是,则需要加引号进行转义。MySQL的text或LongText字段对应NCLOBVSVARCHAR(4000)。一些特殊字段需要超长字符,有4000个边界。如果超过,则需要NCLOB类型。其他低级错误还有一些低级错误,比如:yml配置了冒号后面的空格,特殊字符使用单引号。IDEA将普通Java项目导出为可执行jar时,MANTIFET清单文件生成的目录必须放在src下,否则生成文件打包执行时找不到主类。迭代器遍历的正确用法是while(it.hasNext)而不是if,它只会执行一次。再次印证了一句话经验:不要相信复制的代码,除非它已经通过了你的测试。精度丢失的问题,一个计算指定时间段时间戳的简单代码,没有考虑精度问题,溢出:?