Java语言是一门面向对象的编程,所以想实现分页功能就先设计一个分页的类(不设计也行,但是那就没什么意义了)。因为这个类不是专门给某个数据准备的,是要设计成只要想分页都可以使用这个类。所以就要把这个类设计成一个泛型类。类里一般有几个实例变量总页数、总条数、每页条数、当前页数、数据,然后还有这几个实例变量的get、set方法。
第一步:设计一个分页工具类PageBean
第二步:准备一个dao实现类,存放两方法,一个是查询数据的方法,一个是查询数据总条数的方法。
查询数据的方法需要带两个参数,pageNumber:当前页码,pageSize:每页显示的条数
查询数据总条数的方法:
public int findAllCount1() {
int count = 0;
try {
conn = JdbcUtil.getConnection();
String findAllCountSql = "SELECT COUNT(*) FROM sys_user AS u \r\n" +
"LEFT JOIN sys_role AS r ON u.RoleID = r.RoleID\r\n" +
"LEFT JOIN sys_userpersonal AS up ON u.UserID = up.UserID\r\n";
st = conn.prepareStatement(findAllCountSql);
rs = st.executeQuery();
while(rs.next()) {
count = rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.close(conn, st, rs);
}
return count;
}
第三步:准备一个service实现类,存放处理一些业务的操作
public PageBean<UserPersonal> findPageService(int pageNumber, int pageSize){
//创建实体类
UserDao ud = new UserDaoImpl();
//查询总共有多少条数据,调用dao中查询总条数的方法
int countAll = ud.findAllCount(up);
//计算总页数
int pageAll = countAll%pageSize==0?countAll/pageSize:countAll/pageSize+1;
//判断获取到的页面是否合法
if(pageNumber>pageAll) {
//如果当前页码大于总页码,则将总页码数赋给当前页码
pageNumber=pageAll;
}
if(pageNumber<1) {
//如果当前页码小于1,证明页码不存在,则将当前页码等于1
pageNumber=1;
}
//调用查询方法
List<UserPersonal> listpageNumber = ud.findPage(pageNumber, pageSize, up);
//创建分页工具类对象
PageBean<UserPersonal> pageBean = new PageBean<UserPersonal>();
pageBean.setCountAll(countAll);//总条数
pageBean.setList(listpageNumber);//查询出来的数据
pageBean.setPageSize(pageSize);//每页条数
pageBean.setPageAll(pageAll);//总页数
pageBean.setPageNumber(pageNumber);//当前页数
//返回结果
return pageBean;
}
第四步:准备一个servlet,接收返回数据
private void list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String pageNumber= request.getParameter("pageNumber");//当前页码
String pageSize = request.getParameter("pageSize");//每页条数
//判断页码和条数是否为空(首次访问一般不带参数)
if(OtherUtil.isNull(pageNumber)) {
//页码为空,设置为第一页
pageNumber = "1";
}
if(OtherUtil.isNull(pageSize)) {
//条数为空,设置为每页5条数据
pageSize = "5";
}
//创建一个PageBean对象(存放最后结果)
PageBean<UserPersonal> pageBeanUserPersonal = new PageBean<UserPersonal>();
//创建一个UserService对象(调用分页方法)
UserService us = new UserServiceImpl();
//调用分页方法
pageBeanUserPersonal = us.findPageService(Integer.parseInt(pageNumber), Integer.parseInt(pageSize));
//使用json返回到页面
JSONArray json = JSONArray.fromObject(pageBeanUserPersonal);
response.getWriter().print(json);
}
第五步:对页面进行操作显示,数据输出格式如下:
结果: