项目oracle转mysql记录

1,利用PowerDesigner设计好表,这个表适应需要转型的数据库(MySQL)。


在oracle中主键是采用的是序列知识,并且有些是uuid作为主键的。在Mysql主键用的是numeric(16,0),有些有小数位数的用numeric(5,2)(分数),日期类型采用的是datetime,在oracle中是date,字符串varchar,字符char,oracle中blob类型(spring进行了blob处理),在mysql中用的text类型。出现问题的地方,比如numeric(5,2)在java语言进行强转时出现一些问题,有些根据具体问题,直接在数据库中把字段类型修改为float型,或者numeric(5,0),这样子做不是因为只是适应mysql,而是希望尽可能让java语言适应两套数据库。(并没有设计外键约束,有很多索引;java语言根据需求,领试卷时采用(服务器端缓存)具体技术是spring的缓存,并且@CachePut和@Cacheable以及@CacheEvict配合使用。由于答案的结构涉及太多东西,采用单例模式)


2,代码没有怎么动,只是在DAO的实现层进行了sql语句的修改。命名:接口+MySQLImpl。


oracle :to_char(),to_date(),decode(),sign(),length()字符数,lengthb()和substrb()字节数,floor(),ceil()。有些是利用dual获取到主键id。

mysql :date_format(),if()或者case when(),length(),利用unhex(substring(hex(aaa),pos1,pos2))处理字节方式。mysql利用last_insert_id(exam_id) as id 方法取得。分页,没有动PagingHelper,在sql语句层面进行修改,有两个方法,利用方法签名进行区别。连接或者转字符采用的是concat()。


3,测试用例。

JUnit,注解,ApplicationContext,把相应的配置文件引入进来,只是进行sql语句层面的测试。测试只是看能否跑通sql语句就行了,并没有作太多的思考。在删除语句起别名的地方oracle和mysql有些不同。


4,出现问题,然后分析原因,找到原因后,就思考,我要做什么,比如我想把BigDecimer转成字符串类型,直接找谷老师。原因如何找,镇定阅读报错信息,找到代码中具体的方法,以及方法代码中的具体位置,采用断点,或者System.out.println()打印,或者自己写个MyselfTest进行各种方法测试,看看问题出在哪儿,找到问题出现的原因。熟练使用firefox的F12看看各种信息。解决问题不能单一,可以思考数据库层面中的数据类型呀,可以思考代码层面上的,要考虑两条数据库是否都适用。还有出现问题,应该先动手测试一下,是不是自己按自己所想的,而不是抛出问题。大胆修改,只要分析合理正确,都是可以修改的。








你可能感兴趣的:(实践经验总结,oracle,转,mysql)