JSP+MYSQL+Java类优化分页

2016-01-29 12:54 3 1 收藏

JSP+MYSQL+Java类优化分页,JSP+MYSQL+Java类优化分页

【 tulaoshi.com - Java 】

  在JSP中经常要用到查询数据库中的数据,同常我们的做法是使用SQL语句“select * from tablename order by id desc”,这样的做法有一个缺点,当数据库很大的时候查询的速度会变的很慢,在ASP中有一种方法 "select top "&recpage&" * from tablename where id not in (select top "&(recpage*(currentpage-1))&" id from products order by id desc) order by id desc"其中recpage为每页显示个数, currentpage为当前页数.不过在MYSQL数据库中没有“select top * " 语句,而可以代替的语句是”select * from tablename limit position, counter “position 指示从哪里开始查询,如果是0则是从头开始,counter 表示查询的个数,通过JSP+JAVA查询数据库,查询获取的数据暂时存放在内存中在JSP中通过调取JAVA类,直接从内存中提取数据,速度有了很大提高。

  下面的例子是一个关于网友评论的部分程序,假如你有一个专门供网友浏览的网站,而现在又想和网友互动起来,加一个评论是不错的想法,那么你可以把下面的程序加上,建一个表其中加一个photo_id字段和你的表关联起来后,就可以让网友对你的图片点评了。

  Comment.java是一个评论的类

  //<--------Comment.java ------->
  package dbconnection;
  public class Comment
  {
  private String id;
  private String album_id;
  private String title;
  private String content;
  private String modi_time;
  private String user;
  public void setId(String ids)
  {
  this.id=ids;
  }
  public void setalbum_id(String album_ids)
  {
  this.album_id=album_ids;
  }
  public void setTitle(String titles)
  {
  this.title=titles;
  }
  public void setContent(String contents)
  {
  this.content=contents;
  }
  public void setModi_time(String modi_times)
  {
  this.modi_time=modi_times;
  }
  public void setUser(String users)
  {
  this.user=users;
  }
  public String getId()
  {
  return id;
  }
  public String getalbum_id()
  {
  return album_id;
  }
  public String getTitle()
  {
  return title;
  }
  public String getContent()
  {
  return content;
  }
  public String getModi_time()
  {
  return modi_time;
  }
  public String getUser()
  {
  return user;
  }
  }

   TestSql.java就是我们查询数据库要用到的类了,具体的调用请看下面的comment.jsp文件。

  /**
  * Title jsp+mysql优化分页的例子
  * @author: cyd
  * Copyright: Copyright (c) 2003
  * @version 1.0
  * 日期 2004-9-22
  */

  //<--------TestSql.java ------->

  package dbconnection;
  import java.sql.*;
  import java.util.*;
  public class TestSql
  {
  Statement stmt=null;
  ResultSet rs=null;
  conn c=null;
  Comment comments[]=null;
  Vector v=null;
  int total;
  int PageSize;
  int PageCount;
  public TestSql(Connection cn) throws SQLException
  {
  stmt=cn.createStatement();
  }
  //查询获取记录
  public Comment[] getComment(int pagesize,int page) throws SQLException
  {
  this.PageSize=pagesize;
  String sql="select * from comment order by id desc limit "+(page-1)*pagesize+","+pagesize;
  Comment comments[]=null;
  v=new Vector();
  try
  {
   rs=stmt.executeQuery(sql);
   while(rs.next())
   {
    Comment p=new Comment();
    p.setId(rs.getString("id"));
    p.setTitle(rs.getString("title"));
    p.setContent(rs.getString("content"));
    p.setModi_time(rs.getString("modi_time"));
    p.setUser(rs.getString("user"));
    v.add(p);
   }
  }
  catch(SQLException e)
  {
   System.err.println("err");
  }
  comments=new Comment[v.size()];
  v.copyInto(comments);
  return comments;
  }

来源:https://www.tulaoshi.com/n/20160129/1488015.html

延伸阅读
最基本的分页方式: SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ... 在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引: 举例来说,如果实际SQL类似下面语句,那么在category_id, id两列上建立复合索引比较好: SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT...
标签: ASP
  模块化分页 1.查询语句块 <% 取得当前文件名 temp = Split(request.ServerVariables("URL"), "/") fy = temp(UBound(temp)) set rs=server.createobject("adodb.recordset") if not isempty(request("page")) then   pagecount=cint(request("page"))   else   pagecount=1   end i...
标签: Java JAVA基础
  一、前言 其实,改写后的JDBC Data-Source是运行在Servlet中的,通过JNDI去查找数据源。我用Orion试的,将本站《JAVA/JSP学习系列之六(MySQL翻页例子) 》 简单改写了一下。 二、配置 (1)JDBC 需要将用到的JDBC驱动Copy到[ORION]/lib目录下 (2)data-source 在[ORION]/config/data-sources.xml文件中加入如下: 〈...
class RSPage {   var $Debug    =  0;   var $sqoe     =  1; // sqoe= show query on error   var $Link_ID    = 0;   var $Record    = array();   var $Row;   var $numRow;   var $Parse;   var $Error  ...
标签: Web开发
?php//// +----------------------------------------------------------------------+// | 分页类  |// +----------------------------------------------------------------------+// | Copyright (c) 2001 NetFish Software |//...