java用limit循环读取mysql直到全部读完,并能显示读了多少条

 import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class ReadDBPage {

    /**
     * 查询总条数
     * @return
     */
    public Long querySize() {
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        String sql = " select count(*) as num from compare; ";
        Long size = 0L;
        try {
            conn = DBHelper.getConnection();
            stmt = conn.prepareStatement(sql);
            rs = stmt.executeQuery();
            while (rs.next()) {
                size = rs.getLong("num");
            }
            return size;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                    rs = null;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (stmt != null) {
                try {
                    stmt.close();
                    stmt = null;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }


    /**
     * @param pageNo   表示第几页
     * @param pageSize 表示每页的数量
     * @return
     */
    public List<String> query(int pageNo, int pageSize) {
        //计算起始值,比如假如每页条数为5,第一页是0 - 4,第二页是5 - 9;。。。。
        int pageStart = (pageNo - 1) * pageSize;
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        String sql = " select * from compare limit ?,?; ";
        List<String> mapList = new ArrayList<String>();
        try {
            conn = DBHelper.getConnection();
            stmt = conn.prepareStatement(sql);
            //把参数设置到 ?号里面
            stmt.setInt(1, pageStart);
            stmt.setInt(2, pageSize);
            rs = stmt.executeQuery();
            while (rs.next()) {
                mapList.add(rs.getString("id"));
            }
            return mapList;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                    rs = null;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (stmt != null) {
                try {
                    stmt.close();
                    stmt = null;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

}

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

public class Bootstrap {

    public static void main(String args[]){
        ReadDBPage read = new ReadDBPage();

        //查询数据库中总条数
        Long allSize = read.querySize();

        System.out.println("数据库中总数为:"+ allSize +" 条");

        List<String> allList = new ArrayList<String>();

        int pageSize = 5;//定义每页的条数

        //计算循环次数,即总页数  Math.ceil为向上取整
        int pages = (int) Math.ceil(allSize/(pageSize*1.0));
        System.out.println("总页数为:"+ pages +" 页");

        for(int i=1;i<=pages;i++){
            List<String> onePageList = read.query(i,pageSize);
            allList.addAll(onePageList);
            System.out.println("第"+ i +"页的数据为:"+ onePageList);
        }

        System.out.println("总数据为:"+ allList);
    }
}



执行结果为
图片说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值