spriungboot2.0.6 bootstrap4.0.0 thymeleaf分页

本文介绍如何使用MyBatis的分页插件PageHelper实现数据分页功能,包括POM依赖配置、PageInfo类属性解析及控制器中分页逻辑的实现,通过实例展示如何在前端显示分页导航。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最终效果图 ,差不多就这样

导入pom依赖的分页插件(bootstrap 和 thymeleaf 我就不写了)

<!-- 分页插件 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>

PageInfo属性解释

public class PageInfo<T> extends PageSerializable<T> {
    private int pageNum;//当前页码
    private int pageSize;//每页数量
    private int size;//当前页的数量
    private int startRow;//当前页面第一个元素在数据库中的行号
    private int endRow;//当前页面最后一个元素在数据库中的行号
    private int pages;//总页数
    private int prePage;//前一页
    private int nextPage;//后一页
    private boolean isFirstPage;//是否是第一页
    private boolean isLastPage;//是否是最后一页
    private boolean hasPreviousPage;//是否有前一页
    private boolean hasNextPage;//是否有后一页
    private int navigatePages;//导航栏页码数
    private int[] navigatepageNums;//所有导航栏号
    private int navigateFirstPage;//显示的导航栏的第一页
    private int navigateLastPage;//显示的导航的最后一页

//似乎不完整 total 总记录数 List<T>list 结果集(每页显示的数据)

获取所有数据(注解版的mybatis)

@Select("select * from tb_user")
public List<User> findUserList();

controller:(注意涂颜色的地方)

    @GetMapping("/stuList")
    public ModelAndView page(@RequestParam(required = false, defaultValue = "1", value = "pn") Integer pn,
                             Model model) {
        //pageSize:当前页面显示数据条数
        PageHelper.startPage(pn, 10);

        List<User> users = userService.findUserList();
        model.addAttribute("students", users);

        //navigatePages:导航栏页码数
        PageInfo<User> pageInfo = new PageInfo(users, 5);

        return new ModelAndView("admin/studentList", "pageInfo", pageInfo);
    }

显示页(注意红色地方,)

<div class="row">
    <div class="col-md-6">
        <h5>当前第[[${pageInfo.pageNum }]]页,总[[${pageInfo.pages }]]页,总[[${pageInfo.total }]]条记录
        </h5>
    </div>

    <div class="col-md-6">
        <nav aria-label="Page navigation">
            <ul class="pagination">
                <!--首页 和 上一页-->
                <li>
                    <a th:href="@{/stuList}" class="btn btn-sm">
                        首页
                    </a>
                </li>

                <th:if test="${pageInfo.hasPreviousPage - 1} > 0">
                    <li>
                        <a th:href="@{/stuList(pn=${pageInfo.pageNum - 1})}"
                           aria-label="Previous" class="btn btn-sm"
                           data-th-classappend="${(pageInfo.pageNum - 1) eq 0} ? 'disabled' : ''">
                            <
                        </a>

                    </li>
                </th:if>

                <!--迭代生成页码-->
                <li>

                    <a th:each="i:${pageInfo.navigatepageNums}"
                       th:href="@{/stuList(pn=${i})}"
                       th:text="${i}" class="btn btn-sm"
                       data-th-classappend="${(pageInfo.pageNum) eq i} ? 'btn-info' : ''">
                    </a>

                </li>

                <!--下一页 和 末页-->
                <th:if test="${pageInfo.hasNextPage }">
                    <li>

                        <a aria-label="Next" class="btn btn-sm"
                           th:href="@{/stuList(pn=${pageInfo.pageNum + 1})}"
                        data-th-classappend="${(pageInfo.pageNum) eq (pageInfo.pages)} ? 'disabled' : ''">
                            >
                        </a>

                    </li>
                </th:if>

                <li>

                    <a th:href="@{/stuList(pn=${pageInfo.pages})}" class="btn btn-sm">
                        末页
                    </a>

                </li>
            </ul>
        </nav>
    </div>

</div>

淡紫色的地方是对上一页和下一页的判断是否禁用

到此如果顺利的话就大功告成了

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值