从数据库模糊搜索出来一部分数据,放进list 如何在页面分页显示?
import java.util.List;
public class Page {
// 当前页
private int p;
// 总行数
private int rowCount;
// 总页数
private int maxPage;
// 上一页
private int prev;
// 下一页
private int next;
// 起始行 , 就是用于 limit后面的第一个数字 select * from limit 10(起始行),5(每页显示行数)
private int startLine;
// 每页显示行数
private int size;
// 起始页 , 就是 当前页数 - 5 得到的数字 : 17(起始页) 18 19 20 21 [22] 23 24 25 26(结束页)
private int startPage;
// 结束页
private int endPage;
// 集合
private List list;
// actionName
private String actionName;
// 构造器只接受3个指:当前页数、总行数、每页显示行数。
// 之传入这个3个参数,其他6个都能计算出来! (没有List)
public Page(int p, int rowCount, int size) {
this.p = p;
this.rowCount = rowCount;
this.size = size;
// 首当其冲,先计算总页数
this.maxPage = (int) Math.ceil(this.rowCount * 1.0 / this.size);
// 有了总页数,就能把当前页数限定在一个有效范围中。
if(this.p > this.maxPage) this.p = this.maxPage;
if(this.p < 1) this.p = 1;
// 流程走到这里,我们敢保证,当前页数this.p绝对在1---maxpage之间!!
// 进而拿着有效的当前页,继续推算上一页、下一页
this.prev = this.p - 1;
this.next = this.p + 1;
// SELECT * FROM class LIMIT (当前页数-1)*每页显示行数,每页显示行数
this.startLine = (this.p - 1) * this.size;
// 流程走到这里,起始行和每页显示行数都是有值的了!
// 还有起始页,结束页
if(this.maxPage < 10) {
this.startPage = 1;
this.endPage = this.maxPage;
} else {
this.startPage = this.p - 5;
this.endPage = this.p + 4;
if(this.startPage < 1) {
this.startPage = 1;
this.endPage = 10;
}
if(this.endPage > this.maxPage) {
this.startPage = this.maxPage - 9;
this.endPage = this.maxPage;
}
}
}
public int getP() {
return p;
}
public void setP(int p) {
this.p = p;
}
public int getRowCount() {
return rowCount;
}
public void setRowCount(int rowCount) {
this.rowCount = rowCount;
}
public int getMaxPage() {
return maxPage;
}
public void setMaxPage(int maxPage) {
this.maxPage = maxPage;
}
public int getPrev() {
return prev;
}
public void setPrev(int prev) {
this.prev = prev;
}
public int getNext() {
return next;
}
public void setNext(int next) {
this.next = next;
}
public int getStartLine() {
return startLine;
}
public void setStartLine(int startLine) {
this.startLine = startLine;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public int getStartPage() {
return startPage;
}
public void setStartPage(int startPage) {
this.startPage = startPage;
}
public int getEndPage() {
return endPage;
}
public void setEndPage(int endPage) {
this.endPage = endPage;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public String getActionName() {
return actionName;
}
public void setActionName(String actionName) {
this.actionName = actionName;
}
}
以上是模型
dao层实现
public List<Goods> find(Integer start, Integer size) {
SqlSession session = MybatisUtils.openSession();
GoodsMapper mapper = session.getMapper(GoodsMapper.class);
Integer rowCount = mapper.countByExample(null);
List<Goods> list = mapper.findPageData(start, size);
session.close();
return list;
}
这是 action 中的语句
public void GoodsFindPage(){
Page page = new Page(p, GoofsFindRowCount(), 15);
page.setList(gdao.find(page.getStartLine(), page.getSize())) ;
ActionContext.getContext().put("page", page);
}
这是从数据库中查询总行数,使用 sql语句 实现分页的 !
可是 使用模糊查询 将查询的数据放进list 如何 实现在 jsp页面 分页显示?
或者有其他更好的解决办法!谢谢