Oracle 分页查询实例

/**
* 返回分页相关信息
* @param list 每页显示的记录
* @param pageNo 当前的页数
* @return PageModel
*/

public PageModel<User> findUserList(int pageNo,int pageSize){

PageModel<User> pageModel = null;
String sql = "select count(*) from t_user where user_id <>'root'";
StringBuffer bufSql = new StringBuffer();
bufSql.append("select user_id,user_name,password,telephone,email,creat_date ");
bufSql.append("from ");
bufSql.append("( ");
bufSql.append("select rownum rn,user_id,user_name,password,telephone,email,creat_date ");
bufSql.append("from ");
bufSql.append("( ");
bufSql.append("select rownum rn,user_id,user_name,password,telephone,email,creat_date from t_user where user_id <> 'root' order by user_id ");
bufSql.append(") ");
bufSql.append("where rn <= ? ");
bufSql.append(") ");
bufSql.append(" where rn > ? ");

Connection conn = null;
PreparedStatement pstmt = null;
Statement stmt = null;
ResultSet rs = null;
int totalRecords =0;
int totalPage = 0;
try {
conn = DbUtil.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
rs.next();
totalRecords = rs.getInt(1);

pstmt = conn.prepareStatement(bufSql.toString());
pstmt.setInt(1, pageNo*pageSize);
pstmt.setInt(2, (pageNo-1)*pageSize);
rs = pstmt.executeQuery();
List<User> userList = new ArrayList<User>();

while(rs.next()){
User user = new User();
user.setUserId(rs.getString(1));
user.setUserName(rs.getString(2));
user.setPassword(rs.getString(3));
user.setContackTel(rs.getString(4));
user.setEmail(rs.getString(5));
user.setCreateDate(rs.getTimestamp("creat_date"));
userList.add(user);
}
pageModel = new PageModel<User>();
pageModel.setList(userList);
pageModel.setPageNo(pageNo);
pageModel.setPageSize(pageSize);
pageModel.setTotalPage((totalRecords+pageSize-1)/pageSize);
} catch (SQLException e) {
e.printStackTrace();
}finally{
DbUtil.close(rs);
DbUtil.close(pstmt);
DbUtil.close(conn);
DbUtil.close(stmt);
}

return pageModel;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值