詭異的分頁代碼失效問題,分頁失效

來源:互聯網
上載者:User

詭異的分頁代碼失效問題,分頁失效

前言: 之前碰到了一個介面上分頁失效的問題,並為之困擾了數日,後台定位為排序失效的問題,問題就迎刃而解了...

問題描述:

     在介面上的某個分頁功能存在失效的問題,第一頁、第二頁和最後一頁的分頁效果正常,但是中間的分頁資料不變。 QA提了一個關於此的Bug.

問題分析:

  1.  分析介面分頁代碼

       介面分頁的代碼屬於在項目使用較多的組件,關於失效分頁部分的代碼無特殊的定製和使用。

   2.  前端和後台端互動的分析

        基於HTTP的監控工具,發現分頁請求的請求資料一切正常,分頁的start/limit資料正確,過濾條件是正確的,排除前端問題。

   3.   背景程式碼分析

        背景代碼是基於Hibernate實現的DAO查詢分析,代碼基於基類的常規查詢,無特殊代碼存在。而且這些基類的常規查詢被項目中不同的模組所使用,其他模組功能正常。

        故對這些查詢的代碼是否存在問題,持懷疑態度。

  4.  懷疑產生的SQL是否存在問題

        列印出在查詢中使用的SQL語句,經過分析,SQL也不存在問題。其中使用了log4jdbc來監控sql執行。

  5.  基於查詢中使用的SQL在Oracle的plsql中直接運行SQL

        結果發現,在50~75, 75-~100等區間,的確查詢資料不變。 SQL語句:

 select *          from (select row_.*, rownum rownum_            from (select this_.id          as id25_0_,                         this_.create_time as create2_25_0_,                         this_.creator     as creator25_0_,                         this_.modify_time as modify4_25_0_,                         this_.updater     as updater25_0_,                         this_.version     as version25_0_,                         this_.bank_id     as bank7_25_0_,                         this_.bank_name   as bank8_25_0_,                         this_.chk_comment as chk9_25_0_,                         this_.chk_status  as chk10_25_0_,                         this_.cup_bank_id as cup11_25_0_,                         this_.del_status  as del12_25_0_,                         this_.smp_name    as smp13_25_0_,                         this_.status      as status25_0_                    from ns_para_bank this_                   where this_.chk_status = '02'                     and this_.chk_status = '02'                     and this_.del_status = '01'                   order by this_.modify_time desc                   ) row_           where rownum <= 100)         where rownum_ > 75
6.   後懷疑是排序欄位modifyTime問題

     經過排查,發現大部分的modifiedTime欄位的資料為空白,故導致了排序失效;由於排序失效,引發了分頁資料不變的問題

問題的解決

    為排序條件新增了一個排序欄位, 在modified_time失效的情況下,保證整體排序的有效性,即可解決分頁失效問題。

附錄

    1.  Oralce之rownum的使用方法  http://blog.csdn.net/lcj8/article/details/4720032

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.