实现分页查询的思路与代码

2024-04-29 11:38

本文主要是介绍实现分页查询的思路与代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 思维图
    在这里插入图片描述
  • handler层(也就是control层)
    /*** 分页查询* @param keyword* @param pageNum* @param pageSize* @param modelMap* @return*/@RequestMapping("/admin/get/page.html")public String getPageInfo(// 在请求中没有携带对应参数时,使用defaultValue提供默认值// keyword默认使用空字符串,和sql语句配合实现两种情况的适配@RequestParam(value = "keyword",defaultValue = "") String keyword,// PageNum默认值使用1,页面默认显示第一页@RequestParam(value = "pageNum",defaultValue = "1") Integer pageNum,// PageSize默认值使用5@RequestParam(value = "pageSize",defaultValue = "5") Integer pageSize,ModelMap modelMap) {// 调用Service方法获取PageInfo对象PageInfo<Admin> pageInfo = adminService.getPageInfo(keyword, pageNum, pageSize);// 将PageInfo对象存入模型modelMap.addAttribute(CrowdConstant.ATTR_NAME_PAGE_INFO,pageInfo);return "admin-page";}
  • service层
    @Overridepublic PageInfo<Admin> getPageInfo(String keyword, Integer pageNum, Integer pageSize) {// 1.调用PageHelper的静态方法开启分页功能PageHelper.startPage(pageNum,pageSize);// 2.执行查询List<Admin> list = adminMapper.selectAdminBuKeyword(keyword);// 3.封装到PageInfo对象中,并返回return new PageInfo<>(list);}
  • 分页插件的依赖
            <!-- mybatis分页插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>4.0.0</version></dependency>
  • mapper层
    <select id="selectAdminBuKeyword" resultMap="BaseResultMap">select id, login_acct, user_pswd, user_name, email, create_timefrom tb_adminwherelogin_acct like concat("%",#{keyword},"%") oruser_name like concat("%",#{keyword},"%") oremail like concat("%",#{keyword},"%")</select>
  • 前端JS
<!-- 分页插件要在jQuery的后面 -->
<link rel="stylesheet" href="css/pagination.css">
<script type="text/javascript" src="jquery/jquery.pagination.js"></script><script type="text/javascript">$(function () {// 调用后面声明的函数对页面导航条进行初始化操作initPagination();});// 生成页码导航条函数function initPagination() {// 获取总记录数var totalRecord = ${requestScope.pageInfo.total};// 声明一个JSON对象存储Pagination要设置的属性var properties = {num_edge_entries: 3,                                // 边缘页num_display_entries: 5,                             // 主体页数callback: pageSelectCallback,                     // 指定用户点击翻页时跳转页码的回调函数items_per_page: ${requestScope.pageInfo.pageSize},     // 每页显示多少条数据current_page: ${requestScope.pageInfo.pageNum - 1}, // 两者开始的下标不一致prev_text: "上一页",                                // 上一页按钮上显示的文本next_text: "下一页"                                 // 下一页按钮上显示的文本};// 生成页码导航条$("#Pagination").pagination(totalRecord,properties);}// 回调函数的含义:声明出来之后不是自己调用,而是交给系统或框架调用// 用户点击页码调用这个函数进行页码跳转// pageIndex是Pagination传给我们那个从0开始的页码,使用的时候要+1function pageSelectCallback(pageIndex,jQuery) {// 根据pageIndex计算得到pageNumvar pageNum = pageIndex + 1;// 跳转页面window.location.href = "admin/get/page.html?pageNum="+pageNum+"&keyword=${param.keyword}";// 由于每一个页码按钮都是超链接,所以在这个函数最后取消超链接的默认行为return false;}</script><tfoot><tr><td colspan="6" align="center"><div id="Pagination" class="pagination"><!-- 此处显示分页 --></div></td></tr>
</tfoot>
  • 需要导入分页相关的css代码
@charset "utf-8";      
.pagination a {text-decoration: none;border: 1px solid #AAE;color: #15B;
}.pagination a, .pagination span {display: inline-block;padding: 0.1em 0.4em;margin-right: 5px;margin-bottom: 5px;
}.pagination .current {background: #26B;color: #fff;border: 1px solid #AAE;
}.pagination .current.prev, .pagination .current.next{color:#999;border-color:#999;background:#fff;
}
  • 导入jquery.pagination.js包网上下载即可
    在这里插入图片描述
    感谢封捷老师,目标思路代码

这篇关于实现分页查询的思路与代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945983

相关文章

Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

《SpringBoot整合Redis注解实现增删改查功能(Redis注解使用)》文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Se... 目录配置Redis连接定义实体类创建Repository接口增删改查操作示例插入数据查询数据删除数据更

Java Lettuce 客户端入门到生产的实现步骤

《JavaLettuce客户端入门到生产的实现步骤》本文主要介绍了JavaLettuce客户端入门到生产的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录1 安装依赖MavenGradle2 最小化连接示例3 核心特性速览4 生产环境配置建议5 常见问题

linux ssh如何实现增加访问端口

《linuxssh如何实现增加访问端口》Linux中SSH默认使用22端口,为了增强安全性或满足特定需求,可以通过修改SSH配置来增加或更改SSH访问端口,具体步骤包括修改SSH配置文件、增加或修改... 目录1. 修改 SSH 配置文件2. 增加或修改端口3. 保存并退出编辑器4. 更新防火墙规则使用uf

Java 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

C++中悬垂引用(Dangling Reference) 的实现

《C++中悬垂引用(DanglingReference)的实现》C++中的悬垂引用指引用绑定的对象被销毁后引用仍存在的情况,会导致访问无效内存,下面就来详细的介绍一下产生的原因以及如何避免,感兴趣... 目录悬垂引用的产生原因1. 引用绑定到局部变量,变量超出作用域后销毁2. 引用绑定到动态分配的对象,对象

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符