SMM项目分页显示列表及列表数据增删改

Day04:项目分页显示列表及列表数据增删改

day04总任务:

  • 分页显示列表(难点)
  • 列表数据的删除
  • 列表数据的编辑
  • 列表数据的添加(作业)

列表数据的增删改太简单了,此处就不再赘述.(和前一天的注册内容没什么差别)

下面就主要讲讲分页显示编写过程.

列表分页

1.准备过程

首先,要确定除了列表数据外还需要哪些数据来实现列表分页功能:
总页数 当前页数 总记录数 每页记录数

则,建立PageInfo类:

public class PageInfo {
    private List list;		// 当前页需要展示的数据
    private int totalPage;      // 总页数
    private int totalCount;     // 总记录数
    private int size;           // 每页数据量
    private int currentPage;    // 当前页数
}

其他构造函数set,get函数略

2.界面控制

注意
随列表数据变化的动态数据从后台获取.

前端实现分页逻辑:
利用a标签传参进入更新的列表界面实现获取指定页内容更新列表.

实现:
传递参数到currentPage中,让后台根据currentPage算出列表显示数据
分页部分代码:



3.后台逻辑

接收前端参数(默认1): currentPage [当前页]
接收数据库结果参数: totalCount [总记录数]

实现逻辑:
根据总记录数和设置的每页记录数算出总页数
根据当前页数和设置的每页记录数算出应显示记录范围start,size
根据start,size查找数据库中记录并显示在界面上

实现

public PageInfo findByPage(int currentPage) {
        PageInfo pageInfo = new PageInfo<>();
        // 指定每页的数据量
        pageInfo.setSize(5);

        // 指定总数据量
        int totalCount = userDao.getTotal();
        pageInfo.setTotalCount(totalCount);

        // 指定总页数   ceil() 向上取整  floor() 向下取整  round() 四舍五入
        int totalPage = (int) Math.ceil(totalCount / (double)pageInfo.getSize());
        pageInfo.setTotalPage(totalPage);

        // 判断当前页是否合理
        if (currentPage < 1) {
            pageInfo.setCurrentPage(1);
        } else if (currentPage > totalPage) {
            pageInfo.setCurrentPage(totalPage);
        } else {
            pageInfo.setCurrentPage(currentPage);
        }

        // 指定当前页的数据   指定sql语句中的两个参数
        int start = (pageInfo.getCurrentPage() - 1) * pageInfo.getSize();
        List list = userDao.findAllByPage(start, pageInfo.getSize());
        pageInfo.setList(list);

        return pageInfo;
    }

遇到问题

问题描述
数据没有显示到界面上,之前没分页的时候数据显示正常
SMM项目分页显示列表及列表数据增删改_第1张图片
问题分析
控制台输出正常显示获取数据,逻辑未出现问题

解决方案
更新dataList遍历数据的对象
datalist遍历对象
解决分析
列表遍历对象错误不能正确显示

成果展示

SMM项目分页显示列表及列表数据增删改_第2张图片

总结

第一次写稍微复杂些的功能,跟着老师的脚步,感觉自己又进步了,但还是不够细心,要建立细心的好习惯呀,这样才能减少bug

你可能感兴趣的:(Java全栈项目)