网站展示型推广有哪些,网络设置,动感网站模板,j2ee 做网站文章目录 1、简介2、使用2.1、导入2.1.1、SpringBoot2.1.2、非SpringBoot 2.2、controller2.3、service2.4、mapper #x1f343;作者介绍#xff1a;双非本科大三网络工程专业在读#xff0c;阿里云专家博主#xff0c;专注于Java领域学习#xff0c;擅长web应用开发、… 文章目录 1、简介2、使用2.1、导入2.1.1、SpringBoot2.1.2、非SpringBoot 2.2、controller2.3、service2.4、mapper 作者介绍双非本科大三网络工程专业在读阿里云专家博主专注于Java领域学习擅长web应用开发、数据结构和算法初步涉猎Python人工智能开发和前端开发。 主页逐梦苍穹 项目专栏您的一键三连是我创作的最大动力 1、简介
PageHelper是Mybatis提供的分页插件。 官网https://pagehelper.github.io/ 如果不使用PageHelper分页插件则开发者需要 1使用MySQL中的limit实现查询第几页的时候需要计算查询第几个到第几个。这步容易算错 2需要计算总记录数这需要额外的创建一个SQL语句来获取记录总数 3得到总数后需要根据每页显示几条数据来计算总页数当前页是哪一页上一页是哪一页下一页是哪一页……这些信息都获取后才能在前台展现 使用PageHelper分页插件则没有这些问题。
2、使用 这里以黑马苍穹外卖项目(SpringBoot项目)中的员工分页查询为例 2.1、导入
2.1.1、SpringBoot
dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion1.3.0/version
/dependency配置 application.yml(可以不配)
# 分页配置
pagehelper:helper-dialect: mysql #使用的数据库. mysql, oracle, sqlitereasonable: true #开启优化,在分页页码结果没有数据的时候,会显示有数据的页码数据,也就是当当前页1时,返回第 1 页, 当当前页 最大页时, 返回最后一页的数据.support-methods-arguments: true #是否支持接口参数来传递分页参数默认falsepageSizeZero: false #表示当 pageSize0 时返回所有params: countcountSql2.1.2、非SpringBoot
①引入依赖
!-- pageHelper 分页插件 --
dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper/artifactIdversion5.0.0/version
/dependency②插件设置 XML 方式 : MyBatis.xml
configuration...!-- 使用插件 --plugins!-- 使用分页插件 --plugin interceptorcom.github.pagehelper.PageInterceptor!-- 分页参数合理化, 当页码数 0 时, 显示第一页. 当页码数 总页码数时, 显示最后一页 --property namereasonable valuetrue//plugin/plugins
/configurationJavaConfig 方式 : 添加配置类
Configuration
public class PageHelperConfig {Beanpublic PageHelper pageHelper(){PageHelper pageHelper new PageHelper();Properties p new Properties();//1.offsetAsPageNum:设置为true时会将RowBounds第一个参数offset当成pageNum页码使用.p.setProperty(offsetAsPageNum, true);//2.rowBoundsWithCount:设置为true时使用RowBounds分页会进行count查询.p.setProperty(rowBoundsWithCount, true);//3.reasonable启用合理化时如果pageNum1会查询第一页如果pageNumpages会查询最后一页。p.setProperty(reasonable, true);pageHelper.setProperties(p);return pageHelper;}
}2.2、controller
PageResult pageResult employeeService.pageQuery(employeePageQueryDTO);这里设计返回的数据信息为Result存储分页查询的结果PageResult如下
2.3、service
进入service层
PageHelper.startPage(employeePageQueryDTO.getPage(),employeePageQueryDTO.getPageSize());
PageEmployee page employeeMapper.pageQuery(employeePageQueryDTO);通过PageHelper.startPage()这种方式插件会在底层生成SQL语句时自动添加LIMIT offset, pageSize子句实现数据库级别的分页。 PageHelper.startPage()源码
2.4、mapper
SQL语句如下 看起来好像并没有分页查询的SQL语句根据上文提到的分页查询的SQL是由插件底层编写的。可以查看SpringBoot的控制台日志如下
当前员工id1
员工分页查询,参数为:EmployeePageQueryDTO(namenull, page1, pageSize10)
Preparing: SELECT count(0) FROM employee
Parameters: Total: 1
Preparing: select * from employee order by create_time desc LIMIT ?
Parameters: 10(Integer)
Total: 5