从数据库模糊搜索出来一部分数据,放进list 如何在页面分页显示?

喝coffee的猫 2017-11-01 05:12:50
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页面 分页显示?
或者有其他更好的解决办法!谢谢


...全文
254 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
maradona1984 2017-11-01
  • 打赏
  • 举报
回复
授人鱼不如授人渔 1.数据查询 2.数据展示(遍历即可) 3.分页(跟你选择分页组件有关) 最简单的分页即给个文本框自己输入页码,每页记录数可以写死 然后再复杂点,可以先尝试最简单的上一页下一页 再复杂点,第一页最后一页不显示上一页下一页的逻辑 再可以修改每页记录数 再可以弄成1,2,3,4,5,6...N这种页码的 一步一步做

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧