我的mybatis从oracle迁移转换mysql的差异【原】

该博客主要记录了MySQL与Oracle在多方面的差异。包括分页上,Oracle需3个select达最佳性能,MySQL有基本分页语句;表名方面,Oracle不区分大小写,MySQL大小写敏感;还涉及日期、uuid、like等差异,此外还给出相关参考链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

仅此作为笔记

分页差异

oracle
<select id="select" parameterClass="java.util.Map" resultClass="com.bobo.code.model.LoginMember">
     select * from      
             (select  ROWNUM rn , D.*   FROM 
                          ( select
                                  <include refid= "selectSql" ></include>
                                <include refid= "pageCondition" ></include>
                             order by A.t_crt_tm DESC
                             ) D
                              <![CDATA[ 
                                 WHERE ROWNUM <= #maxRowNum:VARCHAR# 
                             ]]> 
                 )
                 <![CDATA[
                        WHERE rn > #minRowNum:VARCHAR# 
                 ]]> 
    </select>

 

mysql
    <select id="select" parameterClass="java.util.Map" resultClass="com.bobo.code.model.LoginMember">
                           select
                                  <include refid= "selectSql" ></include>
                                <include refid= "pageCondition" ></include>
                                 limit #minRowNum:VARCHAR# , #pageSize:VARCHAR#
    </select>

 

  

因为oracle分页需要3个select 达到最佳性能,具体原因自行百度

 

而mysql分页基本语句如下

收到客户端{pageNo:1,pagesize:10} 
select * from table limit (pageNo-1)*pageSize, pageSize;
收到客户端{pageNo:5,pageSize:30} 
select * from table limit (pageNo-1)*pageSize,pageSize;

 

所以仔细分析差异后, 还是使用oracle的参数,那么mysql的分页条件就变成

表名差异

oracle是不关心表名大小写的, 但是mysql却大小写敏感

oraclemysql
INSERT INTO WEB_KING_LOGIN_MEMBERINSERT INTO web_king_login_member

日期差异

oraclemysql timestamp
sysdatenow()
TO_CHAR(t_crt_tm, 'YYYY-MM-DD HH24:MI:SS')    AS tCrtTm, FROM_UNIXTIME( UNIX_TIMESTAMP(t_upd_tm) , '%Y-%m-%d %H:%i:%s')    AS tCrtTm, 
A.t_crt_tm = TO_DATE(#cCrtTm:VARCHAR#,'yyyy-mm-dd hh24:mi:ss');A.t_crt_tm = unix_timestamp(#cCrtTm:VARCHAR#);

 

 

uuid差异

oraclemysql
SYS_GUID()REPLACE(UUID(),"-","")

 

like差异

oraclemysql
A.c_desc like '%' || #cDesc:VARCHAR# || '%'

 

A.c_desc like concat('%', #cDesc:VARCHAR#, '%')

 

 

其它差异

MySQL与Oracle 差异比较之三函数=>https://www.cnblogs.com/HondaHsu/p/3641190.html

 

转载于:https://www.cnblogs.com/whatlonelytear/p/9557599.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值