ibatis擴展example類對數據庫分頁的實現(轉載)
文章來源:http://blog.csdn.net/lu_yongchao/article/details/6209166mysql:
sql代碼:
select * from user where ... order by ... limit 10,25
根據以上的語句我們可以對ibator生成后的代碼進行修改。
第一修改User_sqlMap.xml
修改前:
- < select id = "ibatorgenerated_selectByExample" resultMap = "ibatorgenerated_BaseResultMap"
- parameterClass = "com.demo.ibatis.beans.UserExample" >
- select ID, LOGIN_NAME, PASSWORD
- from user
- < isParameterPresent >
- < include refid = "user.ibatorgenerated_Example_Where_Clause" />
- < isNotNull property = "orderByClause" >
- order by $orderByClause$
- </ isNotNull >
- </ isParameterPresent >
- </ select >
修改后:
- < select id = "ibatorgenerated_selectByExample" resultMap = "ibatorgenerated_BaseResultMap"
- parameterClass = "com.demo.ibatis.beans.UserExample" >
- select ID, LOGIN_NAME, PASSWORD
- from user
- < isParameterPresent >
- < include refid = "user.ibatorgenerated_Example_Where_Clause" />
- < isNotNull property = "orderByClause" >
- order by $orderByClause$
- </ isNotNull >
- [b] < isNotNull property = "limitClauseStart" >
- limit
- $limitClauseStart$,$limitClauseCount$
- </ isNotNull > [/b]
- </ isParameterPresent >
- </ select >
重要的是黑色的字體是添加到原來的xml中的。接下來修改UserExample.java
在該類中添加兩個字段和相應的getter/setter方法
- protected String limitClauseStart; //起始參數
- protected String limitClauseCount; //數量參數
接下來就可以通過Dao調用selectByExample()方法測試,好的以上就是MySql的分頁。
SqlServer:
SqlServer的分頁比較難了,因為 SqlServer中沒有limit的關鍵字。
看看SqlServer的分頁語句,那當然 SqlServer人分布方法有很多種。這里我采用其中的一種。
語句如下:
- SELECT TOP 頁大小 *
- FROM TestTable
- WHERE (ID NOT IN
- ( SELECT TOP 頁大小*頁數 id
- FROM 表
- ORDER BY id))
- ORDER BY ID
接下來和上面的MySql一樣也進行修改
修改xml
- < select id = "ibatorgenerated_selectByExample" resultMap = "ibatorgenerated_BaseResultMap"
- parameterClass = "com.demo.ibatis.beans.UserExample" >
- [b] < isNotNull property = "limitClauseStart" >
- SELETE TOP $limitClauseCount$ * FROM user where (ID NOT IN
- (SELECT TOP $limitClauseStart$ ID
- </ isNotNull > [/b]
- < isNull property = "limitClauseStart" >
- SELETE *
- </ isNull >
- FROM user
- from user
- < isParameterPresent >
- < include refid = "user.ibatorgenerated_Example_Where_Clause" />
- < isNotNull property = "orderByClause" >
- order by $orderByClause$
- [b] < isNotNull property = "limitClauseStart" >
- ))order by $orderByClause$
- </ isNotNull > [/b]
- </ isNotNull >
- </ isParameterPresent >
- </ 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,
- < select id = "ibatorgenerated_selectByExample" resultMap = "ibatorgenerated_BaseResultMap"
- parameterClass = "com.demo.ibatis.beans.UserExample" >
- [b] < isNotNull property = "limitClauseStart" >
- select* from(select rownum tid,user.* FROM (
- </ isNotNull > [/b]
- select * from user
- < isParameterPresent >
- < include refid = "user.ibatorgenerated_Example_Where_Clause" />
- < isNotNull property = "orderByClause" >
- order by $orderByClause$
- </ isNotNull >
- [b] < isNotNull property = "limitClauseStart" >
- <![[CDATA )user where where rownum<$limitClauseCount$+$limitClauseStart$+1) where tid>$limitClauseStart$;]]>
- </ isNotNull > [/b]
- </ isParameterPresent >
- </ select >
Gavin
posted on 2012-02-03 10:05 GavinMiao 閱讀(3202) 評論(0) 編輯 收藏 所屬分類: ibatis