mysql MVC jsp实现表分页

mysql是轻量级数据库

在三层架构中实现简单的分页

在数据库sql编程中需要编写sql语句

SELECT * FROM sys.student limit 5,5;

limit x,y

x是开始节点,y是开始节点后的需要显示的长度。

在jdbc编程中需要给出x和y

一般是页数*页码,显示的长度。

代码如下

public ArrayList<Stu> query(int page) {

Connection con=Database.DatabaseConnection.getConnection();

PreparedStatement pstmt;

try {

pstmt=con.prepareStatement("select * from sys.student limit ?,?");

pstmt.setInt(1, (page-1)*5);

pstmt.setInt(2, page*5);

ResultSet rs=pstmt.executeQuery();

ArrayList<Stu> stus=new ArrayList<Stu>();

Stu stu;

while(rs.next()){

stu=new Stu(rs.getString("name"),rs.getInt("age"));

stus.add(stu);

}

return stus;

} catch (SQLException ex) {

Logger.getLogger(operationStuImpl.class.getName()).log(Level.SEVERE, null, ex);

}

return null;

}

这样给出页码就可以得到一页的表中的元组。

还有如何得到表中元组的数量来限制最后一页。

数据库编程:

public int queryCount() {

//得到所有的行

Connection con=Database.DatabaseConnection.getConnection();

PreparedStatement pstmt;

try {

pstmt=con.prepareStatement("select count(*) from sys.student");

//pstmt.setString(1, name);

ResultSet rs=pstmt.executeQuery();

//找到学生信息

//Stu stu=new Stu();

while(rs.next()){

int count=rs.getInt(1);

return count;

}

} catch (SQLException ex) {

Logger.getLogger(operationStuImpl.class.getName()).log(Level.SEVERE, null, ex);

}

return 0;

}

实现所有元组的获取

servlet的实现:

String page=request.getParameter("page");

int page1=Integer.parseInt(page);

int count=operationFactory.operationFactory.getOperationDao().queryCount();

ArrayList<Stu> stus;

if(page1<=count/5){

//request.setAttribute("page1", page1-1);

request.setAttribute("page2", page1+1);

}else{

//request.setAttribute("page1", page1-1);

request.setAttribute("page2", page1);

}

if(page1>1)

{

request.setAttribute("page1", page1-1);

}else{

request.setAttribute("page1", page1);

}

stus=operationFactory.operationFactory.getOperationDao().query(page1);

request.setAttribute("stus", stus);

request.setAttribute("count", (count/5+1));

request.getRequestDispatcher("query.jsp").forward(request, response);

前端jsp实现:

<div class="text-center margin-big-top">

<a href="QueryServlet?page=1">首页</a>

<a href="QueryServlet?page=${page1}">上一页</a>

<a href="QueryServlet?page=${page2}">下一页</a>

<!--<a href="QueryServlet?page=1">${count-1}1</a>

<a href="QueryServlet?page=2">${count}2</a>-->

<c:forEach var="i" begin="1" end="${count}" step="1">

<a href="QueryServlet?page={i}"\>\</c:forEach>

<a href="QueryServlet?page=${count}">尾页</a>

</div>

page1和page2分别实现的是前一页和后一页。

${i}实现的是总页数,迭代的结果。这样可以得到那一页的结果集。

实现页面:

相关推荐
怣509 分钟前
MySQL表筛选分组全解析:排序、分组与限制的艺术
数据库·mysql
tsyjjOvO12 分钟前
JDBC(Java Database Connectivity)
java·数据库
qq_124987075317 分钟前
基于springboot的尿毒症健康管理系统的设计与实现(源码+论文+部署+安装)
java·spring boot·spring·毕业设计·计算机毕业设计
黎子越1 小时前
python相关练习
java·前端·python
电商API&Tina1 小时前
电商数据采集 API 接口 全维度解析(技术 + 商业 + 合规)
java·大数据·开发语言·数据库·人工智能·json
liwulin05061 小时前
【JSON】使用com.fasterxml.jackson解析json字符串
java·数据库·json
ActionTech1 小时前
MySQL 用好 Optimizer Trace,深刻理解 SQL 优化过程!
sql·mysql·oracle
what丶k1 小时前
深度解析:以Kafka为例,消息队列消费幂等性的实现方案与生产实践
java·数据结构·kafka
星火开发设计1 小时前
C++ 输入输出流:cin 与 cout 的基础用法
java·开发语言·c++·学习·算法·编程·知识
毕设源码-邱学长2 小时前
【开题答辩全过程】以 基于Springboot的酒店住宿信息管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端