Java實現MySQL分頁查詢


一、在Dao類中寫兩種方法:獲得總頁數和指定頁的數據

獲得總頁數

public int getPageCount(int pageSize) throws Exception{
        try {
            conn=DBConnection.getConnection();
            String sql="select count(*) from car";
            stat=conn.prepareStatement(sql);
            rs=stat.executeQuery();
            rs.next();
            int rowsCount=rs.getInt(1);
            int pageCount=(int)Math.ceil(1.0*rowsCount/pageSize);//算出總共需要多少頁
            return pageCount;
        }
        finally{
            conn.close();
        }

獲得指定頁的數據

public ArrayList<Car> getPageCar(int pageNo,int pageSize) throws Exception{//兩個形參分別為當前頁,每頁有多少行
        ArrayList<Car> list=new ArrayList<Car>();
        try {
            conn=DBConnection.getConnection();            
            String sql="select * from car limit ?,?";
            stat=conn.prepareStatement(sql);
            stat.setInt(1, (pageNo-1)*pageSize);距離這一頁的第一行數據,其前面有多少行數據
            stat.setInt(2, pageSize);//每頁有多少行
            rs=stat.executeQuery();
            while(rs.next()){
                Car data=new Car();
                data.setCode(rs.getString(1));
                data.setName(rs.getString(2));
                data.setBrand(rs.getString(3));
                data.setTime(rs.getDate(4));
                data.setOil(rs.getDouble(5));
                data.setPowers(rs.getInt(6));
                data.setExhaust(rs.getInt(7));
                data.setPrice(rs.getDouble(8));
                data.setImage(rs.getString(8));
                list.add(data);                
            }
            
        } finally{
        conn.close();
        }
        return list;
    }    

二、servlet處理數據

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //獲取參數
        int pageNo=1;
        String s=request.getParameter("pgno");
        if(s!=null){
            pageNo=Integer.parseInt(s);
        }
        //處理數據
        try {
            int pageCount=new CarDao().getPageCount(PAGESIZE);//獲得總頁數
            ArrayList<Car> list=new CarDao().getPageCar(pageNo, PAGESIZE);//獲得指定頁數據
            int currentPage=pageNo;
            request.setAttribute("currentPage", currentPage);
            request.setAttribute("pageCount", pageCount);
            request.setAttribute("cars", list);
            int pagePrev=pageNo>1?pageNo-1:1;//上一頁
            int pageNext=pageNo<pageCount?pageNo+1:pageCount;//下一頁
            request.setAttribute("pageNow", pageNo);
            request.setAttribute("pagePrev", pagePrev);
            request.setAttribute("pageNext", pageNext);
            
        } catch (Exception e) {
            // TODO 自動生成的 catch 塊
            e.printStackTrace();
        }
        
        //跳轉
        request.getRequestDispatcher("home.jsp").forward(request, response);
    }

三、在jsp頁面輸出

<%@page import="com.itnba.maya.bean.Car"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script>
function aaa(){
    document.getElementById("f1").submit();
}
</script>
</head>
<body>
<h1>汽車分頁</h1>
<c:forEach items="${cars }" var="c">
<div>
<span style="width:100px;display:inline-block;">${c.code }</span>
<span style="width:300px;display:inline-block;">${c.name }</span>
</div>
</c:forEach>
<!--下面是分頁鏈接 -->
<a href="show?pgno=1">首頁</a>
<a href="show?pgno=${pagePrev }">上一頁</a>

<c:forEach begin="1" end="${pageCount }" var="i">
<a href="show?pgno=${i }">${i }</a> &nbsp;
</c:forEach>
<a href="show?pgno=${pageNext }">下一頁</a>
<a href="show?pgno=${pageCount }">尾頁</a>
<form id="f1" method="get" action="show">
<select name="pgno" onchange="aaa()">
<c:forEach begin="1" end="${pageCount }" var="i">
<c:choose>
    <c:when test="${pageNow == i }">
        <option value="${i }" selected="selected" >${i }</option>
    </c:when>
    <c:otherwise>
        <option value="${i }">${i }</option>
    </c:otherwise>
</c:choose>
</c:forEach>
</select>
</form>
</body>
</html>

運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM