1. 程式人生 > >筆記:最簡單的分頁

筆記:最簡單的分頁

1。將jdbc封裝好

package javaweb.jdbc.dao;

import com.class1.model.Software;
import javaweb.jdbc.util.ConfigUtil;

import java.lang.reflect.Field;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/*升級版jdbc*/
public class BaseDao2 {
    Connection connection = null
; PreparedStatement statement = null; ResultSet resultSet = null; public Connection getConnection() { try { Class.forName(ConfigUtil.getValue("driver")); return connection = DriverManager.getConnection(ConfigUtil.getValue("url"), ConfigUtil.getValue("username"
), ConfigUtil.getValue("password")); } catch (ClassNotFoundException e) { e.printStackTrace(); return null; } catch (SQLException e) { e.printStackTrace(); return null; } } /*建立通用的增改刪方法*/ public void update(String sql, Object[] params
) { connection = getConnection(); PreparedStatement statement = null; try { statement = connection.prepareStatement(sql); if (params != null && params.length > 0) { for (int i = 0; i < params.length; i++) { statement.setObject(i + 1, params[i]); } } statement.execute(); } catch (SQLException e) { e.printStackTrace(); }finally { close(); } } /*搜尋單條資訊*/ public Object searchOne(String sql, Object[] params,Class<?> clz){ connection = getConnection(); Object bean = null; try { statement = connection.prepareStatement(sql); resultSet = statement.executeQuery(); while (resultSet.next()) { bean= doResultSet(resultSet, clz); } return bean; } catch (SQLException e) { e.printStackTrace(); }finally { close(); } return null; } /*處理resultset,返回單個物件*/ public Object doResultSet(ResultSet resultSet,Class<?> clz){ try { Object bean = clz.newInstance(); ResultSetMetaData metaData = resultSet.getMetaData(); int count = metaData.getColumnCount();//有幾個欄位 for(int i=0;i<count;i++) { String colName = metaData.getColumnName(i+1);//欄位名 Object value = resultSet.getObject(i+1);//欄位值 Field field = clz.getDeclaredField(colName); field.setAccessible(true); field.set(bean,value);//將bean物件中的相關的欄位名改為新的資料 } return bean; } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } return null; } /*搜尋多條資訊*/ public List<?> searchList(String sql, Object[] params,Class<?> clz){ connection = getConnection(); List<Object> objects = null; try { statement = connection.prepareStatement(sql); if (params!=null&&params.length>0) { for (int i=0;i<params.length;i++) { statement.setObject(i + 1, params[i]); } } resultSet = statement.executeQuery(); objects = doResultSetList(resultSet, clz); return objects; } catch (SQLException e) { e.printStackTrace(); }finally { close(); } return null; } /*處理resultset,返回多個物件*/ public List<Object> doResultSetList(ResultSet resultSet,Class<?> clz){ List<Object> objects = new ArrayList<Object>(); try { while (resultSet.next()) { Object bean = clz.newInstance(); ResultSetMetaData metaData = resultSet.getMetaData(); int count = metaData.getColumnCount();//有幾個欄位 for (int i = 0; i < count; i++) { String colName = metaData.getColumnName(i + 1);//欄位名 Object value = resultSet.getObject(i + 1);//欄位值 Field field = clz.getDeclaredField(colName); field.setAccessible(true); field.set(bean, value);//將bean物件中的相關的欄位名改為新的資料 } objects.add(bean); } return objects; } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } return null; } /*獲取資料總數*/ public int count(String sql){ connection = getConnection(); ResultSet resultSet = null; PreparedStatement statement = null; try { statement = connection.prepareStatement(sql); resultSet = statement.executeQuery(); if (resultSet.next()){ return resultSet.getInt(1); } } catch (SQLException e) { e.printStackTrace(); } return 0; } /*關閉物件*/ public void close() { try { if (resultSet != null) resultSet.close(); if (statement != null) statement.close(); if (connection != null) connection.close(); } catch (SQLException e) { e.printStackTrace(); } } }

2。顯示資料的業務處理程式碼

<%@ page import="javaweb.jdbc.dao.SoftwareDao" %>
<%@ page import="com.class1.model.Software" %>
<%@ page import="java.util.List" %>
<%@ page import="javaweb.jdbc.dao.StuDao" %>
<%@ page import="javaweb.jdbc.model.Student" %>
<%@ page import="java.sql.Statement" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    request.setCharacterEncoding("utf-8");
    StuDao dao = new StuDao();
    String key = request.getParameter("key");
    String index = request.getParameter("pageNum");
    String size = request.getParameter("pageSize");
    int pageNum = 1;
    int pageSize = 2;
    int pageCount = 0;
    if (index!=null&&!"".equals(index)){
        pageNum = Integer.parseInt(index);
    }
    if (size!=null&&!"".equals(size)){
        pageSize = Integer.parseInt(size);
    }
    List<Student> students = null;
    if (key==null) key="";
    students = dao.pageStu("%"+key+"%",pageNum,pageSize);
    pageCount = dao.pageCount(pageSize);


    request.setAttribute("pageSize",pageSize);
    request.setAttribute("students",students);
    request.setAttribute("pageNum",pageNum);
    request.setAttribute("pageCount",pageCount);
    request.getRequestDispatcher("stuList.jsp").forward(request,response);
%>

3。介面展示

<%@ page import="java.util.List" %>
<%@ page import="com.class1.model.Software" %>
<%@ page import="javaweb.jdbc.dao.StuDao" %>
<%@ page import="javaweb.jdbc.model.Student" %><%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2018/2/17 0017
  Time: 下午 11:22
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>所有學生</title>
</head>
<body>

<%
    int currentIndex = (int) request.getAttribute("pageNum");//當前頁
    int pageCount = (int) request.getAttribute("pageCount");//總頁數
    int pageSize = (int) request.getAttribute("pageSize");//總頁數
%>
<form action="doStudentList.jsp" method="post">
<a href="#" >新增學生</a>
<div align="center">
    姓名查詢:<input type="text" size="20" name="key" value=""><input type="submit" value="查詢">
</div>
<table border="1" width="900" align="center">
    <tr>
        <th>id</th>
        <th>編號</th>
        <th>姓名</th>
        <th>密碼</th>
        <th>年齡</th>
        <th>操作</th>

    </tr>
    <%
        List<Student> students = (List<Student>) request.getAttribute("students");
        if (students!=null&&students.size()>0){
            for (Student student:students){
    %>
            <tr>
                <td><%=student.getId()%></td>
                <td><%=student.getStuNo()%></td>
                <td><%=student.getStuName()%></td>
                <td><%=student.getPassword()%></td>
                <td><%=student.getAge()%></td>

                <td align="center"><a href="#">修改</a>|<a href="#">刪除</a></td>
            </tr>
        <% }%>
            <tr>
                <td colspan="6" align="center">

                    <a href="doStudentList.jsp?pageNum=1&pageSize=<%=pageSize%>">首頁</a>
                    <% if (currentIndex!=1){%>
                        <a href="doStudentList.jsp?pageNum=<%=currentIndex-1%>&pageSize=<%=pageSize%>">上一頁</a>
                    <%}else{%>
                        <a href="#">上一頁</a>
                    <%}%>
                    <%
                    for (int i=0;i<pageCount;i++){
                        if (currentIndex==i+1){
                    %>
                        <%=i+1%>
                    <%
                        }else{
                    %>
                        <a href="doStudentList.jsp?pageNum=<%=i+1%>&pageSize=<%=pageSize%>"><%=i+1%></a>
                    <%
                            }}
                    %>
                    <% if (currentIndex!=pageCount){%>
                        <a href="doStudentList.jsp?pageNum=<%=currentIndex+1%>&pageSize=<%=pageSize%>">下一頁</a>
                    <%}else{%>
                        <a href="#">下一頁</a>
                    <%}%>
                    <a href="doStudentList.jsp?pageNum=<%=pageCount%>&pageSize=<%=pageSize%>">尾頁</a>
                    <%=currentIndex%>/<%=pageCount%>

                        <input type="text" size="5" name="pageNum"/>
                        <select name="pageSize">
                            <option >2</option>
                            <option>4</option>
                            <option>6</option>
                            <option>10</option>
                        </select>
                </td>
            </tr>
    <%
        }else {
    %>
            <tr>
                <td colspan="6" align="center">暫時沒有資料</td>
            </tr>
    <%
        }
    %>
</table>
</form>
</body>
</html>