1. 程式人生 > >Maven+Mybatis+Spring+SpringMVC實現分頁查詢

Maven+Mybatis+Spring+SpringMVC實現分頁查詢

XML lec www tails odin build 效果 servle lpad

轉載: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實現分頁查詢