自由飛翔

          我在仰望,java之上

          統計

          留言簿(2)

          我關注的blog

          閱讀排行榜

          評論排行榜

          ibatis擴展example類對數據庫分頁的實現(轉載)

          文章來源:http://blog.csdn.net/lu_yongchao/article/details/6209166

          mysql:

          sql代碼:

          select  *  from   user   where ... order   by ... limit 10,25  
          根據以上的語句我們可以對ibator生成后的代碼進行修改。 
          第一修改User_sqlMap.xml 
          修改前:

          1. < select   id = "ibatorgenerated_selectByExample"           resultMap = "ibatorgenerated_BaseResultMap"   
          2.      parameterClass = "com.demo.ibatis.beans.UserExample" >   
          3.     select ID, LOGIN_NAME, PASSWORD   
          4.     from user   
          5.      < isParameterPresent >   
          6.          < include   refid = "user.ibatorgenerated_Example_Where_Clause"   />   
          7.                 < isNotNull   property = "orderByClause" >   
          8.                 order by $orderByClause$   
          9.                         </ isNotNull >   
          10.          </ isParameterPresent >   
          11. </ select >  

          修改后:
          1. < select   id = "ibatorgenerated_selectByExample"   resultMap = "ibatorgenerated_BaseResultMap"   
          2.          parameterClass = "com.demo.ibatis.beans.UserExample" >   
          3.         select ID, LOGIN_NAME, PASSWORD   
          4.         from user   
          5.      < isParameterPresent >   
          6.          < include   refid = "user.ibatorgenerated_Example_Where_Clause"   />   
          7.              < isNotNull   property = "orderByClause" >   
          8.                 order by $orderByClause$   
          9.                          </ isNotNull >   
          10.             [b] < isNotNull   property = "limitClauseStart" >   
          11.                 limit   
          12.                 $limitClauseStart$,$limitClauseCount$   
          13.              </ isNotNull > [/b]   
          14.      </ isParameterPresent >   
          15. </ select > 

          重要的是黑色的字體是添加到原來的xml中的。接下來修改UserExample.java 
          在該類中添加兩個字段和相應的getter/setter方法
          Java代碼
          1. protected  String limitClauseStart; //起始參數   
          2. protected  String limitClauseCount; //數量參數  

          接下來就可以通過Dao調用selectByExample()方法測試,好的以上就是MySql的分頁。
          SqlServer:

          SqlServer的分頁比較難了,因為 SqlServer中沒有limit的關鍵字。 
          看看SqlServer的分頁語句,那當然 SqlServer人分布方法有很多種。這里我采用其中的一種。 
          語句如下:

          1.    SELECT   TOP  頁大小 *   
          2.    FROM  TestTable   
          3.    WHERE  (ID  NOT   IN   
          4.           ( SELECT   TOP  頁大小*頁數 id   
          5.           FROM  表   
          6.           ORDER   BY  id))   
          7. ORDER   BY  ID 

          接下來和上面的MySql一樣也進行修改 
          修改xml

          1. < select   id = "ibatorgenerated_selectByExample"   resultMap = "ibatorgenerated_BaseResultMap"   
          2.          parameterClass = "com.demo.ibatis.beans.UserExample" >   
          3.         [b]  < isNotNull   property = "limitClauseStart" >   
          4.             SELETE TOP $limitClauseCount$ * FROM user where (ID NOT IN    
          5.                        (SELECT TOP $limitClauseStart$ ID    
          6.                    </ isNotNull > [/b]   
          7.                     < isNull   property = "limitClauseStart" >   
          8.             SELETE *    
          9.            </ isNull >   
          10.                     FROM user    
          11.         from user   
          12.      < isParameterPresent >   
          13.          < include   refid = "user.ibatorgenerated_Example_Where_Clause"   />   
          14.              < isNotNull   property = "orderByClause" >   
          15.                 order by $orderByClause$   
          16.                                [b]   < isNotNull   property = "limitClauseStart" >   
          17.                      ))order by $orderByClause$   
          18.                      </ isNotNull > [/b]   
          19.                          </ isNotNull >   
          20.      </ isParameterPresent >   
          21. </ select >  

          接下來是ORacle的,和上面都是差不多的這里不多說。 
          語法: 
          select* from(select rownum tid,user.* FROM (select * from user where id>1 order by ID desc)user where where rownum<35) where tid>10; 
          修改Xml,
          1. < select   id = "ibatorgenerated_selectByExample"       resultMap = "ibatorgenerated_BaseResultMap"   
          2.          parameterClass = "com.demo.ibatis.beans.UserExample" >   
          3.         [b]  < isNotNull   property = "limitClauseStart" >   
          4.             select* from(select rownum tid,user.* FROM (   
          5.                    </ isNotNull > [/b]   
          6.                    select * from user   
          7.      < isParameterPresent >   
          8.          < include   refid = "user.ibatorgenerated_Example_Where_Clause"   />   
          9.              < isNotNull   property = "orderByClause" >   
          10.                 order by $orderByClause$                 
          11.                          </ isNotNull >   
          12.                         [b]   < isNotNull   property = "limitClauseStart" >   
          13.                     <![[CDATA )user where where rownum<$limitClauseCount$+$limitClauseStart$+1) where tid>$limitClauseStart$;]]>  
          14.                   </ isNotNull > [/b]   
          15.      </ isParameterPresent >   
          16. </ select >   









          Gavin

          posted on 2012-02-03 10:05 GavinMiao 閱讀(3202) 評論(0)  編輯  收藏 所屬分類: ibatis


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 江永县| 教育| 鹤岗市| 临泉县| 锡林浩特市| 红桥区| 郑州市| 白沙| 苏尼特左旗| 华池县| 青河县| 吉安县| 上杭县| 浦县| 蓬溪县| 永仁县| 西乡县| 怀来县| 洛浦县| 镇坪县| 信丰县| 五台县| 错那县| 新密市| 乌拉特前旗| 邢台县| 喀喇| 永仁县| 广平县| 云阳县| 涡阳县| 和田县| 寿阳县| 晋宁县| 浦城县| 灵宝市| 黄平县| 浪卡子县| 沁水县| 桐柏县| 赫章县|