爲了更簡單的實現數據庫分頁,咱們不探討本身手動修改sql語句分頁,這裏關於PageHelper本身配置是出現的問題進行記錄下:
我採用的是Maven代碼託管,在pom.xml進行以下配置:mysql
<!-- Mybatis 分頁插件 PageHelper 5.0.2包 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.2</version>
</dependency>
若是沒有使用Maven工具,則本身手動下載jar包便可;
spring-mybatis.xml:進行以下配置:git
<!-- 配置分頁插件 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageHelper">
<property name="properties">
<value>
<!-- 你使用的數據庫類型(主流的都行) -->
dialect=mysql
reasonable=true
</value>
</property>
</bean>
</array>
</property>
當咱們運行項目是,問題就來了,報相似下面的錯誤: github
如圖探究呢,當掃描器走到這裏是,配置文件沒法識別,後續就沒有了,中止掃描文件,致使報錯;最後反覆探究後,配置沒有問題,緣由的PageHelper的版本問題,修改版本spring
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
項目運行成功
調用數據庫數據前加一句代碼便可;實現分頁
PageHelper.startPage(pageNum, pageSize)sql
4.1.6PageHelper插件jar包.rar下載
http://download.csdn.net/detail/qq_33624284/9857198
數據庫
spring-mybatis.xml文件中配置
<!-- spring和MyBatis完美整合,不須要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自動掃描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:com/wl/goldatg/mapping/*.xml"></property>
<!-- 配置分頁插件 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageHelper">
<property name="properties">
<value>
dialect=mysql
reasonable=true
</value>
</property>
</bean>
</array>
</property>
</bean>
## 下面咱們就可使用 ##mybatis
新建sql語句,返回list結果集
<select id="selectByList" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from user_t
</select>
service層
public List<User> selectByList() {
return this.userDao.selectByList();
}
Controller類
@RequestMapping("/userList")
public String userList(@RequestParam(required=true,defaultValue="1") Integer page,HttpServletRequest request,Model model){
//PageHelper.startPage(page, pageSize);這段代碼表示,程序開始分頁了,page默認值是1,pageSize默認是10,意思是從第1頁開始,每頁顯示10條記錄。
PageHelper.startPage(page, 3);
List<User> userList = userService.selectByList();
PageInfo<User> p=new PageInfo<User>(userList);
model.addAttribute("page", p);
model.addAttribute("userList",userList);
return "showUser";
}
PageInfo這個類是插件裏的類,很是方便的調用,分頁再次提升性能:app
//當前頁
private int pageNum;
//每頁的數量
private int pageSize;
//當前頁的數量
private int size;
//排序
private String orderBy;工具
//因爲startRow和endRow不經常使用,這裏說個具體的用法
//能夠在頁面中"顯示startRow到endRow 共size條數據"性能
//當前頁面第一個元素在數據庫中的行號
private int startRow;
//當前頁面最後一個元素在數據庫中的行號
private int endRow;
//總記錄數
private long total;
//總頁數
private int pages;
//結果集
private List<T> list;
//第一頁
private int firstPage;
//前一頁
private int prePage;
//下一頁
private int nextPage;
//最後一頁
private int lastPage;
//是否爲第一頁
private boolean isFirstPage = false;
//是否爲最後一頁
private boolean isLastPage = false;
//是否有前一頁
private boolean hasPreviousPage = false;
//是否有下一頁
private boolean hasNextPage = false;
//導航頁碼數
private int navigatePages;
//全部導航頁號
private int[] navigatepageNums;
使用PageInfo這個類,你須要將查詢出來的list放進去:
List<User> userList = userService.selectByList();
PageInfo<User> p=new PageInfo<User>(userList);
頁面使用很是方便,直接貼代碼:
控制層
model.addAttribute("page", p);
前臺頁面
<body>
<center>
<table width="200" border="1">
<tr>
<th scope="col">序號</th>
<th scope="col">ID</th>
<th scope="col">姓名</th>
<th scope="col">密碼</th>
<th scope="col">年齡</th>
</tr>
<c:forEach begin="0" step="1" items="${userList}" var="list" varStatus="userlist">
<tr>
<td>${userlist.count}</td>
<td>${list.id}</td>
<td>${list.userName}</td>
<td>${list.password}</td>
<td>${list.age}</td>
</tr>
</c:forEach>
</table>
<p>一共${page.pages}頁</p>
<a href="userList?page=${page.firstPage}">第一頁</a>
<a href="userList?page=${page.nextPage}">下一頁</a>
<a href="userList?page=${page.prePage}">上一頁</a>
<a href="userList?page=${page.lastPage}">最後頁</a>
</center>
</body>
最後結果顯示:(關鍵點${page.prePage}簡單又快捷)