从数据库模糊搜索出来一部分数据,放进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页面 分页显示?
或者有其他更好的解决办法!谢谢


...全文
177 1 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
maradona1984 2017-11-01
授人鱼不如授人渔 1.数据查询 2.数据展示(遍历即可) 3.分页(跟你选择分页组件有关) 最简单的分页即给个文本框自己输入页码,每页记录数可以写死 然后再复杂点,可以先尝试最简单的上一页下一页 再复杂点,第一页最后一页不显示上一页下一页的逻辑 再可以修改每页记录数 再可以弄成1,2,3,4,5,6...N这种页码的 一步一步做
  • 打赏
  • 举报
回复
相关推荐
最新单片机仿真 独立式键盘调时的数码时钟实验 最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的
发帖
Web 开发
加入

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2017-11-01 05:12
社区公告
暂无公告