关于分页

本文介绍了一个JavaBean分页类实现及如何在MySQL中进行分页查询。通过具体的代码示例,展示了如何创建分页类Page并利用它来获取特定页面的数据,同时提供了从数据库中提取交易消息的完整过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 javabean:

//分页类

package db;

public class Page {
 
 public Page(){
  
 }
 
 private final static int RecordsPerPage = 2;

 private int first_page;

 private int prev_page;

 private int next_page;

 private int last_page;

 private int current_page;

 private int total_page;

 private int start_record;

 private int end_record;

 public Page(int currentPage, int total_records) {
  current_page = currentPage;
  if (current_page < 0)
   current_page = 0;

  total_page = (total_records + RecordsPerPage - 1) / RecordsPerPage;
  if (total_page == 0)
   current_page = 0;
  else if (current_page >= total_page)
   current_page = total_page - 1;

  start_record = current_page * RecordsPerPage + 1;
  end_record = Math.min(start_record + RecordsPerPage - 1, total_records);

  if (total_page <= 0) {
   first_page = -1;
   prev_page = -1;
   next_page = -1;
   last_page = -1;
  } else {
   if (current_page > 0) {
    first_page = 0;
    prev_page = current_page - 1;
   } else {
    first_page = -1;
    prev_page = -1;
   }

   if (current_page < total_page - 1) {
    next_page = current_page + 1;
    last_page = total_page - 1;
   } else {
    next_page = -1;
    last_page = -1;
   }
  }
 }

 public int getFirstPage() {
  return first_page;
 }

 public int getPrevPage() {
  return prev_page;
 }

 public int getNextPage() {
  return next_page;
 }

 public int getLastPage() {
  return last_page;
 }

 public int getCurrentPage() {
  return current_page;
 }

 public int getTotalPage() {
  return total_page;
 }

 public int getStartRecord() {
  return start_record;
 }

 public int getEndRecord() {
  return end_record;
 }
}

 

mysql查询:

public List Select_All_Trade(int currentPage) {
  Connection con = null;
  con = Dbconn.getConnection();
  List ems = new ArrayList();
  
  //分页
  Statement stmt = null;
  try {
   stmt = (Statement) con.createStatement();
  } catch (SQLException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  }
  String SQLCount = "select count(*) from trademessagetb";
  ResultSet rs_fy = null;
  int total_records = 0;
  try {
   rs_fy = (ResultSet) stmt.executeQuery(SQLCount);
  } catch (SQLException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  }
  try {
   rs_fy.next();
  } catch (SQLException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  }
  try {
   total_records = rs_fy.getInt(1);
   
  } catch (SQLException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  }
  try {
   rs_fy.close();
  } catch (SQLException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  }
  try {
   stmt.close();
  } catch (SQLException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  }
  
  try {
   con.setAutoCommit(false);
  } catch (SQLException e2) {
   // TODO Auto-generated catch block
   e2.printStackTrace();
  }
  Page pn = new Page(currentPage, total_records);
  System.out.println(currentPage);
  System.out.println(total_records);

  ResultSet rs = null;
  int PageSize = 2;
  PreparedStatement ps = null;
  try {
   StringBuffer s = new StringBuffer(
     "select * from trademessagetb");
   s.append(" ");
   s.append("order");
   s.append(" ");
   s.append("by");
   s.append(" ");
   s.append("id desc ");
   s.append("LIMIT ");
   s.append(pn.getStartRecord()-1);
   s.append(",");
   s.append(PageSize);
   
   String str5 = s.toString();
   ps = con.prepareStatement("" + str5);
   rs = (ResultSet) ps.executeQuery();
   ems = Assemble1(rs);
   
  } catch (SQLException ex) {
   ex.printStackTrace();
  }
  try {
   if (con != null)
    con.commit();
   else
    con.rollback();
  } catch (SQLException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
  return ems;
 }

private List Assemble1(ResultSet rs) {
  // TODO Auto-generated method stub
  ArrayList results = new ArrayList();
  ChangeChar mm = new ChangeChar();

  try {
   while (rs.next()) {
    TradeMessage t = new TradeMessage();
    t.setId(rs.getInt("id"));
    //System.out.println("测试");
    //System.out.println(t.getId());
    //System.out.println("测试");
    t.setGamename(mm.Char(rs.getString("gamename")));
    t.setGamearea(mm.Char(rs.getString("gamearea")));
    t.setTradetype(mm.Char(rs.getString("tradetype")));
    t.setMessagetype(mm.Char(rs.getString("messagetype")));
    t.setTradetitle(mm.Char(rs.getString("tradetitle")));
    t.setTradecontent(mm.Char(rs.getString("tradecontent")));
    t.setPrice(mm.Char(rs.getString("price")));
    t.setLinkman(mm.Char(rs.getString("linkman")));
    t.setLinktel(mm.Char(rs.getString("linktel")));
    t.setProvince(mm.Char(rs.getString("province")));
    t.setCity(mm.Char(rs.getString("city")));
    t.setQq(mm.Char(rs.getString("qq")));
    t.setEmail(mm.Char(rs.getString("email")));
    results.add(t);
   }
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return results;
 }

action类:

package web;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import tables.TradeMessage;

import com.opensymphony.xwork2.ActionSupport;

import db.Db_Interface;
import db.Db_Interface_Imp;

public class ShowAllTrade extends ActionSupport {
 
 private String current_page;

 public String getCurrent_page() {
  return current_page;
 }

 public void setCurrent_page(String current_page) {
  this.current_page = current_page;
 }

 public String execute() throws Exception {
  
  List ems = new ArrayList();

  Db_Interface service = new Db_Interface_Imp();
  
  ems = service.Select_All_Trade(Integer.parseInt(current_page));
  
  HttpServletRequest request = ServletActionContext.getRequest();
   
  request.setAttribute("ems",ems);

  return "success";
 }


}
jsp调用:

<%@ page language="java"
 import="java.util.*,tables.TradeMessage,db.Page" pageEncoding="utf-8"%>
<%@ page language="java" import="db.Db"%>
<jsp:directive.page import="db.Db_Interface" />
<jsp:directive.page import="db.Db_Interface_Imp;" />
<html>
 <head>
  <title>测试显示交易条目</title>

 </head>

 <body>
  <%
   Db_Interface service = new Db_Interface_Imp();
   int Page_rows = 2;
   String counts;
   int count = 0;
   int Allpage;
   counts = service.Tj_Message();
   count = Integer.parseInt(counts);
   if (count % Page_rows == 0) {
    Allpage = count / Page_rows;
   } else {
    Allpage = count / Page_rows + 1;
   }

   List ems = new ArrayList();
   ems = (List) request.getAttribute("ems");
  %>
  <%
    for (int i = 0; i < ems.size(); i++) {
    TradeMessage em1 = null;
    em1 = (TradeMessage) ems.get(i);
  %>
  <a href="show_message.action?id=<%=em1.getId()%>"><font color=red>交易标题:<%=em1.getTradetitle()%>
  </font>
  </a>

  <br />

  游戏名称:
  <%=em1.getGamename()%>
  <br />

  区域:
  <%=em1.getGamearea()%>
  <br />

  交易类型:
  <%=em1.getTradetype()%>
  <br />

  信息类别:
  <%=em1.getMessagetype()%>
  <br />

  交易标题:
  <%=em1.getTradetitle()%>
  <br />

  <%
  }
  %>

  <%
  int current_page = request.getParameter("current_page") == null ? 0
    : Integer
      .parseInt(request.getParameter("current_page"));

   if (current_page < 0)
    current_page = 0;

   Db wd = new Db();
   Page pn = new Page(current_page,count);
  %>
  <div class="comments" align=right>
   <font size="2"> <%
 if (pn.getFirstPage() >= 0) {
 %> <a href="show_allmessage.action?current_page=<%=pn.getFirstPage()%>">第一页</a>
    <%
    } else {
    %> <a href="#">第一页</a> <%
  }
  if (pn.getPrevPage() >= 0) {
 %> <a href="show_allmessage.action?current_page=<%=pn.getPrevPage()%>">上一页</a>
    <%
    } else {
    %> <a href="#">上一页</a> <%
  }
  if (pn.getNextPage() >= 0) {
 %> <a href="show_allmessage.action?current_page=<%=pn.getNextPage()%>">下一页</a>
    <%
    } else {
    %> <a href="#">下一页</a> <%
  }
  if (pn.getLastPage() >= 0) {
 %> <a href="show_allmessage.action?current_page=<%=pn.getLastPage()%>">最后一页</a>
    <%
    } else {
    %> <a href="#">最后一页</a> <%
 }
 %> <font size=2 color=#008000>共<%=Allpage%>页 共<%=count%>条记录 当前是第<%=current_page + 1%>页</font>
   </font>
  </div>

  


  <br />


 </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值