您的位置:首页 > 编程语言 > Java开发

java简单实现分页查询

2016-11-15 14:07 615 查看

PreparedStatement

使用PreparedStatement可以较为简单地实现分页,涉及到三个函数

1.
PreparedStatement.setMaxRows(int)
这个函数设置一个当前的preparedStatement能取得的行的最大值,例如setMaxRows(20),那么就只能取得1到20的数据,ResultSet.absolute(100)就错了,虽然该查询语句可以查到不止100条数据

2.
ResultSet.absolute(int)
,将ResultSet的游标移动到一个固定的行,例如,执行一次absolute(10)之后游标指向第10行,再执行absolute(10)没有改变,api中指出absolute(0)可以用,但是某些版本的mysql不能执行absolute(0),参数可以为负数,为负数的时候就加上resultset的size,例如absolute(-1)会到记录的最后一条

3.
ResultSet.relative(int)
,将ResultSet的游标移动固定的行,例如,执行一次relative(10)之后游标指向第10行,再执行relative(10)游标指向第20行

limit

mysql 可以使用limit sql语句分页,
select * from table limit m,n;


选取从m(0开始)开始,长度为n的数据

代码

/**
* @param page 获取第几页
* @param rows 每一页获取几条数据
* @param conn 数据库连接
*/
public static ResultSet pageWithAbsolute(int page,int rows,Connection conn) throws SQLException {
PreparedStatement pst=conn.prepareStatement("SELECT * FROM test ");
pst.setMaxRows(page*rows);//设置为需要获取的最后一个数据
ResultSet rs=pst.executeQuery();
rs.absolute((page-1)*rows);//设置为需要获取的第一个数据
return rs;
}

/**
* @param page 获取第几页
* @param rows 每一页获取几条数据
* @param conn 数据库连接
* */
public static ResultSet pageWithRelative(int page,int rows,Connection conn) throws SQLException {
PreparedStatement pst=conn.prepareStatement("SELECT * FROM test ");
pst.setMaxRows(page*rows);//设置为需要获取的最后一个数据
ResultSet rs=pst.executeQuery();
rs.relative((page-1)*rows);//设置为需要获取的第一个数据
return rs;
}

/**
* @param page 获取第几页
* @param rows 每一页获取几条数据
* @param conn 数据库连接
* */
public static ResultSet pageWithLimit(int page,int rows,Connection conn) throws SQLException {
PreparedStatement pst=conn.prepareStatement("SELECT * FROM test limit ?,?");
pst.setInt(1,(page-1)*rows);
pst.setInt(2,rows);
ResultSet rs=pst.executeQuery();
return rs;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息