Maven+Mybatis+Spring+SpringMVC實現分頁查詢
轉載:http://www.cnblogs.com/zhangtan/p/5846955.html
一、項目搭建
關於項目搭建,小寶鴿以前寫過一篇Spirng+SpringMVC+Maven+Mybatis+MySQL項目搭建,這篇文章提供了詳細的搭建過程,而且提供了源碼下載,接下來的將在這個源碼的基礎上繼續開發。所以建議各位猿友可以把猿友下載一下。
二、分頁插件的介紹
博主采用的插件是PageHelper這個插件,使用起來十分方便。該插件支持以下數據庫:
1 2 3 4 5 6 7 8 9 10 |
Oracle
Mysql
MariaDB
SQLite
Hsqldb
PostgreSQL DB2
SqlServer( 2005 +)
Informix
H2
|
對應於github的項目地址:
https://github.com/pagehelper/Mybatis-PageHelper。
關於使用建議猿友們可以詳細閱讀下這裏的介紹:
http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/HowToUse.markdown
讀一遍之後可能還不能完全懂怎麽使用,可以先看完博主的這篇文章,然後慢慢再消化,但是上面的那篇文章還是需要從頭到尾看一遍。
三、PageHelper的使用
在”一、項目搭建“裏下載好了源碼,下載的源碼導入eclipse後的結構裏面,有如下的文件:
接下來我們並不需要新增文件,直接在這些文件上修改就好了。
3.1、引入依賴
在pom.xml文件添加如下依賴:
1 2 3 4 5 6 |
<!-- mybatis分頁插件依賴 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version> 4.0 . 0 </version>
</dependency>
|
3.2、在Mybatis配置xml中配置攔截器插件
在mybatis-config.xml文件中添加插件後的內容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?xml version= "1.0" encoding= "UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" >
<configuration>
<plugins>
<!-- com.github.pagehelper為PageHelper類所在包名 -->
<plugin interceptor= "com.github.pagehelper.PageHelper" >
<property name= "dialect" value= "mysql" />
<!-- 該參數默認為 false -->
<!-- 設置為 true 時,會將RowBounds第一個參數offset當成pageNum頁碼使用 -->
<!-- 和startPage中的pageNum效果一樣-->
<property name= "offsetAsPageNum" value= "true" />
<!-- 該參數默認為 false -->
<!-- 設置為 true 時,使用RowBounds分頁會進行count查詢 -->
<property name= "rowBoundsWithCount" value= "true" />
<!-- 設置為 true 時,如果pageSize= 0 或者RowBounds.limit = 0 就會查詢出全部的結果 -->
<!-- (相當於沒有執行分頁查詢,但是返回結果仍然是Page類型)-->
<property name= "pageSizeZero" value= "true" />
<!-- 3.3 . 0 版本可用 - 分頁參數合理化,默認 false 禁用 -->
<!-- 啟用合理化時,如果pageNum< 1 會查詢第一頁,如果pageNum>pages會查詢最後一頁 -->
<!-- 禁用合理化時,如果pageNum< 1 或pageNum>pages會返回空數據 -->
<property name= "reasonable" value= "false" />
<!-- 3.5 . 0 版本可用 - 為了支持startPage(Object params)方法 -->
<!-- 增加了一個`params`參數來配置參數映射,用於從Map或ServletRequest中取值 -->
<!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默認值 -->
<!-- 不理解該含義的前提下,不要隨便復制該配置 -->
<property name= "params" value= "pageNum=start;pageSize=limit;" />
<!-- always總是返回PageInfo類型,check檢查返回類型是否為PageInfo,none返回Page -->
<property name= "returnPageInfo" value= "check" />
</plugin>
</plugins>
</configuration>
|
3.3、mapper文件添加sql
在userMapper.xml文件裏面添加sql:
1 2 3 4 5 6 7 8 9 10 |
<!-- 根據用戶名查詢 -->
<select id= "selectUserByUserName" parameterType= "java.lang.String" resultMap= "BaseResultMap" >
SELECT *
FROM t_user
WHERE 1 = 1
< if test= "userName != null and userName !=‘‘" >
AND USER_NAME = #{userName,jdbcType=VARCHAR}
</ if >
ORDER BY USER_ID
</select>
|
3.4、dao添加對用方法
UserDao.java添加如下方法:
1 |
List<User> selectUserByUserName( @Param ( "userName" ) String userName);
|
記得@Param必須有
3.5、service添加分頁查詢方法
UserService.java文件添加方法
1 |
PageInfo<User> queryByPage(String userName,Integer pageNo,Integer pageSize);
|
3.6、實現類添加對應實現
UserServiceImpl.java添加實現方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
@Override
public PageInfo<User> queryByPage(String userName, Integer pageNo,Integer pageSize) {
pageNo = pageNo == null ? 1 :pageNo;
pageSize = pageSize == null ? 10 :pageSize;
PageHelper.startPage(pageNo, pageSize);
List<User> list = userDao.selectUserByUserName(userName);
//用PageInfo對結果進行包裝
PageInfo<User> page = new PageInfo<User>(list);
//測試PageInfo全部屬性
System.out.println(page.getPageNum());
System.out.println(page.getPageSize());
System.out.println(page.getStartRow());
System.out.println(page.getEndRow());
System.out.println(page.getTotal());
System.out.println(page.getPages());
System.out.println(page.getFirstPage());
System.out.println(page.getLastPage());
System.out.println(page.isHasPreviousPage());
System.out.println(page.isHasNextPage());
return page;
}
|
3.7、單元測試類添加分頁查詢測試方法
UserServiceTest.java文件添加方法:
1 2 3 4 5 |
@Test
public void queryByPageTest(){
PageInfo<User> page = userService.queryByPage( null , 1 , 1 );
System.out.println(page);
}
|
3.8、運行
在小寶鴿進行了上面的修改之後,第一運行報錯了!!!!最後是pom.xml文件註釋了下面兩個包的依賴才運行成功了,註釋的依賴如下:
具體原因現在小寶鴿也不知道,應該是包有沖突的原因吧,如果猿友們知道原因麻煩私信我或評論解釋一下。
然後運行單元測試類,結果如下:
3.9、補充說明
在3.8中,我註釋了那兩個包依賴是web項目相關的依賴,如果仍需要進行前端開發的猿友可以引入tomcat就好了,引入結果如下:
引入過程:
選中項目右鍵–>build path,然後如下操作:
4、源碼下載
http://download.csdn.net/detail/u013142781/9379685
來自: http://blog.csdn.net//u013142781/article/details/50410243
Maven+Mybatis+Spring+SpringMVC實現分頁查詢