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>