筆記:最簡單的分頁
阿新 • • 發佈:2019-01-29
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&¶ms.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>