利用数据库实现分页,并显示在Table中

数据库实现每次获得N(可以更改)条数据并下一次跳过已获得的数据
MYsql:    String sql = "select * from GoodsType LIMIT "+start+","+sum; 为Mysql数据库

SQL:       String sql = "select top "+sum+" * from GoodsType where GoodsTypeid not in (select top "+start+" GoodsTypeid from GoodsType)";

在表格中每次循环显示出来就行,(注:打开或者跳转当前页面时候都要传入一个参数值,否则:404)

例:

方法:public List findGoodsTypeByPage(int page) { //分页查询
List list = new ArrayList();
GoodsType goodsType = null;
    Connection conn = null;//连接对象(建立通道java-驱动)
    PreparedStatement pstmt = null;//执行对象(执行sql语句)
        ResultSet rs = null;//结果集(查询数据库返回结果集)    
        int sum=10;//sum值为每页显示20条
int start=sum *(page-1);//第1页第一条记录下标是0.第二页第一条记录下标为20,这个是根据给的页面数值找下标初始值
//     String sql = "select * from GoodsType LIMIT "+start+","+sum; 为Mysql数据库
String sql = "select top "+sum+" * from GoodsType where GoodsTypeid not in (select top "+start+" GoodsTypeid from GoodsType)";
    try {
//1获得连接
    conn = DBConnection.getConn();
    //2创建执行对象
    pstmt = conn.prepareStatement(sql);
    rs = pstmt.executeQuery();
    while(rs.next()){//判断是否查询到数据
    goodsType = new GoodsType();
    //把rs中的数据封装到goodsType对象
    goodsType.setGoodsTypeId(rs.getInt(1));//rs索引从1开始,表示表中第一列,按照数据库表列的顺序
    goodsType.setGoodsTypeName(rs.getString(2));
    goodsType.setGoodsTypeContent(rs.getString(3));
    //将对象添加到集合
    list.add(goodsType);
    }
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭资源
DBConnection.closeResultSet(rs);
DBConnection.closeStatement(pstmt);
DBConnection.closeConn(conn);
}
    return list;
}

JSP页面关键代码:

<%
int p=1;
p=Integer.parseInt(request.getParameter("page"));
if(p<1) p=1; //当页数小于1的时候,就为第一页
GoodsTypeDaoImpl g = new GoodsTypeDaoImpl();
List list = g.findGoodsTypeByPage(p);
for(GoodsType goodsType :list){
%>






<%
} %>
<%out.print(goodsType.getGoodsTypeId()); %><%=goodsType.getGoodsTypeName() %><%=goodsType.getGoodsTypeContent() %>

第<%out.print(p); %>页  
上一页
下一页


你可能感兴趣的:(利用数据库实现分页,并显示在Table中)