Java实现分页数据获取CachedRowSet

步骤

1.加载驱动
2.连接数据库
3.创建ResultSet
4.创建CacheRowSet
5.设置并获取分页数据
6.执行查询,展示数据

package ch13;
import javax.sql.rowset.CachedRowSet;
import javax.sql.rowset.RowSetFactory;
import javax.sql.rowset.RowSetProvider;
import java.sql.*;

/**
 * Created by Jiqing on 2016/12/22.
 */
public class CachedRowSetPage {
    private String driver;
    private String url;
    private String user;
    private String pass;
    // 初始化参数
    public void initParam() {
        driver = "com.mysql.jdbc.Driver";
        url    = "jdbc:mysql://127.0.0.1:3306/tpshop";
        user   = "root";
        pass   = "123456";
    }

    // 实现分页效果
    public CachedRowSet query(String sql,int pageSize,int page) throws Exception{
        // 加载驱动
        Class.forName(driver);
        try(
                // 获取数据库连接
                Connection conn = DriverManager.getConnection(url,user,pass);
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery(sql))
        {
            RowSetFactory factory = RowSetProvider.newFactory();
            CachedRowSet  cachedRs= factory.createCachedRowSet();
            // 设置每页显示pageSize条记录
            cachedRs.setPageSize(pageSize);
            // 设置从第几条记录开始
            cachedRs.populate(rs,(page - 1) * pageSize + 1);
            return cachedRs;
        }
    }

    // 主函数
    public static void main(String[] args) throws Exception{ // 有了它就不要写Catch了
        CachedRowSetPage cp = new CachedRowSetPage();
        cp.initParam();
        CachedRowSet rs = cp.query("select * from tp_goods", 3, 4);
        while (rs.next()) {
            System.out.println(rs.getString(1) + "\t" + rs.getString(4) + "\t" + rs.getString(5));
        }
    }
}

结果:

47 TP0000047 【联通合约机 50元本地套餐】荣耀畅玩5X 双卡双待 增强全网通版 智能手机(落日金)
48 TP0000048 荣耀7 双卡双待双通 移动4G版 16GB存储(冰河银)豪华套装一
49 TP0000049 荣耀畅玩5X 双卡双待 移动版 智能手机(破晓银)

方法论,孔子说的好,温故而知新。学而时习之不亦说乎,学思并重,疑思问。

posted @ 2016-12-23 00:16  TBHacker  阅读(2961)  评论(0编辑  收藏  举报