项目从oracle迁移到sqlserver后,代码中分页的相对改动 编辑

10 篇文章 0 订阅
   场景是一个后台的管理项目,突然要把数据库从oracle改成sqlserver,于是把表啊数据之类的,完全迁移到sqlserver之后,代码中的ibatis的写好的oracle的分页,在基于sqlsever数据库的系统上,不能运行,比如oracle里的dual表,rownum等,sqlserver里没有。
Xml代码
  1. <select id="getLogList" resultClass="monitorLog" parameterClass="monitorLog">   
  2.         SELECT *  
  3.             FROM (SELECT c.*, rownum r  
  4.               from (select  
  5.                        LOG_ID            logID,  
  6.                        LOG_OPERTOR       logOpertor,  
  7.                        OPERTOR_TIME      opertorTime,  
  8.                        LOG_DESC          logDesc                        
  9.                   from MONITOR_LOG a  
  10.                  WHERE 11 = 1                    
  11.                  <isNotEmpty property = "dateStart" prepend = "and" >  
  12.                       to_char(a.OPERTOR_TIME,'yyyy-MM-dd hh24:mi:ss') &gt;=#dateStart# and to_char(a.OPERTOR_TIME,'yyyy-MM-dd hh24:mi:ss') &lt;=#dateEnd#   
  13.                  </isNotEmpty>  
  14.                  <isNotEmpty property = "logOpertor" prepend = "and" >                        
  15.                       a.LOG_OPERTOR =#logOpertor#   
  16.                  </isNotEmpty>                                                      
  17.                  order by OPERTOR_TIME desc) c)  
  18.         where r &gt;= #startRow#   
  19.         AND rownum &lt;= #pageSize#  

 以上是oracle的下,根据rownum来分页的,startRow和pageSize分别是实体类中对应的字段,开始行和页大小。

迁移到sqlserver之后,因为startRow和pageSize已经定了,所以修改的话,也得基于这两个字段。修改代码如下:

Xml代码
  1. <select id="getLogList" resultClass="monitorLog" parameterClass="monitorLog">   
  2.       SELECT TOP $pageSize$   
  3.                        LOG_ID            logID,  
  4.                       LOG_OPERTOR       logOpertor,  
  5.                       OPERTOR_TIME      opertorTime,  
  6.                       LOG_DESC          logDesc                        
  7.                  from MONITOR_LOG a  
  8.                 WHERE 11 = 1         
  9.                 <isNotEmpty property = "dateStart" prepend = "and" >  
  10.                      CONVERT(varchar(100), a.OPERTOR_TIME, 23) &gt;=#dateStart# and CONVERT(varchar(100), a.OPERTOR_TIME, 23) &lt;=#dateEnd#   
  11.                 </isNotEmpty>  
  12.                 <isNotEmpty property = "logOpertor" prepend = "and" >                         
  13.                      a.LOG_OPERTOR =#logOpertor#   
  14.                 </isNotEmpty>                                                      
  15.         and LOG_ID>=(  
  16.            select max(LOG_ID) from (   
  17.                   select top $startRow$ LOG_ID from MONITOR_LOG order by LOG_ID  
  18.            ) as t  
  19.         ) order by LOG_ID      
  20. </select> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值