IBatis 分页,这里没有使用其他插件,只使用最原始的方法。

输入参数:

int   currentPage  当前页

int   pageSize  每页大小

Hashtable   findCondition  查询条件

out  int   total  返回总数

输出:  

DataTable  或者  IList<T>

使用了三种分页方式,根据实际情况使用。

我在实际应用中,

第一种返回DataTable,在使用过程中,需要注意它所映射的实体对象名称字段。

第二种方法返回泛型集合,使用的比较顺手,也是习惯使用的方法。

第三种方法也是返回泛型集合。但是,它使用的两个参数,偏移量和页面大小,我平常用的概率小点。

1:在一个statements中,使用了两条语句,一个是返回所需的列,一个是返回总数。。

  1 <select id="Article_FindPageByCond" parameterClass="HashTable" resultClass="System.Data.DataSet" >
  2       <![CDATA[select           
  3                 T.[PK_Article]
  4                 ,T.[ArticleTitle]
  5                 ,T.[ArticleAuthor]
  6                 ,T.[ArticleSummary]
  7                 ,T.[ArticleContent]
  8                 ,T.[Sort]
  9                 ,T.[EditTime]
 10                 ,T.[Dr]
 11                 ,T.[Ts]
 12           from
 13           ( select A.*, ROW_NUMBER() OVER ( ORDER BY 
 14                  (A.[PK_Article] )
 15                   ) rn
 16               from
 17               (select *  from [dbo].[Article]]]>
 18                   <dynamic prepend="WHERE">
 19                     <isNotEmpty prepend="and" property="PKArticle">
 20                         PKArticle LIKE '%'+#PKArticle#+'%'
 21                     </isNotEmpty>
 22                     <isNotEmpty prepend="and" property="ArticleTitle">
 23                         ArticleTitle LIKE '%'+#ArticleTitle#+'%'
 24                     </isNotEmpty>
 25                     <isNotEmpty prepend="and" property="ArticleAuthor">
 26                         ArticleAuthor LIKE '%'+#ArticleAuthor#+'%'
 27                     </isNotEmpty>
 28                     <isNotEmpty prepend="and" property="ArticleSummary">
 29                         ArticleSummary LIKE '%'+#ArticleSummary#+'%'
 30                     </isNotEmpty>
 31                     <isNotEmpty prepend="and" property="ArticleContent">
 32                         ArticleContent LIKE '%'+#ArticleContent#+'%'
 33                     </isNotEmpty>
 34                     <isNotNull property="Sort">
 35                         <isNotEmpty property="Sort">
 36                             <isNotEqual prepend="and" property="Sort" compareValue="0">
 37                                 Sort LIKE '%'+#Sort#+'%'
 38                             </isNotEqual>
 39                         </isNotEmpty>
 40                     </isNotNull>
 41                     <isNotEmpty prepend="and" property="EditTime">
 42                         EditTime LIKE '%'+#EditTime#+'%'
 43                     </isNotEmpty>
 44                     <isNotEmpty prepend="and" property="Dr">
 45                         Dr LIKE '%'+#Dr#+'%'
 46                     </isNotEmpty>
 47                     <isNotEmpty prepend="and" property="Ts">
 48                         Ts LIKE '%'+#Ts#+'%'
 49                     </isNotEmpty>
 50                 </dynamic>
 51               ) A
 52           ) T
 53           where 1=1 and
 54           <![CDATA[  rn <= #currentPage# * #pageSize# ]]>
 55           and  <![CDATA[ rn >(#currentPage# - 1) * #pageSize# ]]>
 56           
 57           <![CDATA[      
 58            select count(*) as total
 59           from
 60           ( select A.*, ROW_NUMBER() OVER ( ORDER BY 
 61                  (A.[PK_Article] )
 62                   ) rn
 63               from
 64               (select *  from [dbo].[Article]]]>
 65                   <dynamic prepend="WHERE">
 66                     <isNotEmpty prepend="and" property="PKArticle">
 67                         PKArticle LIKE '%'+#PKArticle#+'%'
 68                     </isNotEmpty>
 69                     <isNotEmpty prepend="and" property="ArticleTitle">
 70                         ArticleTitle LIKE '%'+#ArticleTitle#+'%'
 71                     </isNotEmpty>
 72                     <isNotEmpty prepend="and" property="ArticleAuthor">
 73                         ArticleAuthor LIKE '%'+#ArticleAuthor#+'%'
 74                     </isNotEmpty>
 75                     <isNotEmpty prepend="and" property="ArticleSummary">
 76                         ArticleSummary LIKE '%'+#ArticleSummary#+'%'
 77                     </isNotEmpty>
 78                     <isNotEmpty prepend="and" property="ArticleContent">
 79                         ArticleContent LIKE '%'+#ArticleContent#+'%'
 80                     </isNotEmpty>
 81                     <isNotNull property="Sort">
 82                         <isNotEmpty property="Sort">
 83                             <isNotEqual prepend="and" property="Sort" compareValue="0">
 84                                 Sort LIKE '%'+#Sort#+'%'
 85                             </isNotEqual>
 86                         </isNotEmpty>
 87                     </isNotNull>
 88                     <isNotEmpty prepend="and" property="EditTime">
 89                         EditTime LIKE '%'+#EditTime#+'%'
 90                     </isNotEmpty>
 91                     <isNotEmpty prepend="and" property="Dr">
 92                         Dr LIKE '%'+#Dr#+'%'
 93                     </isNotEmpty>
 94                     <isNotEmpty prepend="and" property="Ts">
 95                         Ts LIKE '%'+#Ts#+'%'
 96                     </isNotEmpty>
 97                 </dynamic>
 98               ) A
 99           ) T         
100     </select>
返回所需列,返回总数

相关文章:

  • 2022-02-09
  • 2021-06-29
  • 2022-12-23
  • 2021-12-02
  • 2021-09-07
  • 2021-08-29
  • 2022-01-14
猜你喜欢
  • 2021-10-25
  • 2022-02-26
  • 2021-10-29
  • 2021-07-21
  • 2021-08-20
  • 2022-12-23
  • 2021-08-29
相关资源
相似解决方案