项目原理
今天学习内容是ssm项目实现分页功能和拦截器。
1.分页功能的实现思路是通过sql语句limit来确定页面的开始数以及数量多少;
<select id="findAll" resultType="user">
select * from tb_user
<if test="username!=null and username !=''">
where username like concat("%",#{username},"%")
</if>
limit #{start},#{size}
</select>
2.bean层新建pageInfo类来保存分页信息;
package com.zr.bean;
import java.util.List;
public class PageInfo<T> {
private List<T> list;
private int totalCount;
private int size;
private int totalPage;
private int currentPage;
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
@Override
public String toString() {
return "PageInfo{" +
"list=" + list +
", totalCount=" + totalCount +
", size=" + size +
", totalPage=" + totalPage +
", currentPage=" + currentPage +
'}';
}
}
3.在UserSerImpl中修改findAll()方法
@Override
public PageInfo<User> findAll(int currentPage,String username) {
PageInfo pageInfo=new PageInfo();
int totalCount=userDao.getTotalCount(username);
pageInfo.setTotalCount(totalCount);
double d=totalCount/5.0;
int tp= (int) Math.ceil(d);
pageInfo.setTotalPage(tp);
pageInfo.setSize(5);
if(currentPage<1){
pageInfo.setCurrentPage(1);
}else if(currentPage>tp){
pageInfo.setCurrentPage(tp);
}else {
pageInfo.setCurrentPage(currentPage);
}
int start=(pageInfo.getCurrentPage()-1)*5;
List<User> userList = userDao.findAll(start, 5,username);
pageInfo.setList(userList);
return pageInfo;
}
4.修改前端代码 user_list.jsp
<tbody
<c:forEach items="${pageInfo.list}" var="user">
<tr>
<td><