SpringBoot+Mybatis分页插件PageHelper实现分页效果
目录
- 一、项目结构
- 二、插件引入
- 三、代码
- 四、测试:
附上一篇Mybatis常用的分页案例。这次要做的是最常见的分页效果,也是基础功能。但是很多人都做不好的。这次采用Mybatis分页插件PageHelper。
仅献给伸手党的大爷们。大爷们好!拿代码记得扣666!!小的在这给感谢了!!
一、项目结构
文章图片
按照controller,service,mapper(也叫dao)来建立项目,utils里面是两个自己写的分页工具类。看前
端需要什么分页参数,你方便添加。并能返回给他
二、插件引入 1.pom.xml。引入PageHelper插件
4.0.0 org.springframework.boot spring-boot-starter-parent2.5.6 com.simons SimonsStudio0.0.1-SNAPSHOT SimonsStudio SimonsStudio 1.8 org.springframework.boot spring-boot-starter-weborg.mybatis.spring.boot mybatis-spring-boot-starter2.2.0 mysql mysql-connector-javaruntimeorg.springframework.boot spring-boot-starter-testtestcom.github.pagehelper pagehelper-spring-boot-starter1.2.3 org.springframework.boot spring-boot-maven-plugin
2.application.xml配置。我的*maper.xml都是放在resource文件夹里面的。这里有个 mapper-locations一定要配你项目的,不懂的看我的项目结构。PageHelper照着配置就行了。
server:port: 8080 spring:datasource:name: testurl: jdbc:mysql://127.0.0.1:3306/simonsdbusername: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driver mybatis:mapper-locations: classpath:mapper/*.xml#注意了!这个是mapper.xml的路径。要按照目录文件夹来命名。type-aliases-package: com.smions.entity#实体类的文件夹pagehelper: #helperDialect: mysqlreasonable: truesupportMethodsArguments: trueparams: count=countSql
三、代码 1.mapper。习惯上从dao层写起来。@Mapper@Component两个注解要写上,不然后面springboot启动的时候扫描不到。在Mybatis中。mapper相当于dao层。只有接口。selectPage这个是我们要做的分页,这个名字和Maper.xml里面的id对应。要写对了。
package com.simons.mapper; import com.simons.entity.Student; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; @Mapper@Componentpublic interface StudentMapper {/*** 查询全部用户* @return*/List
2.*mapper.xml。namespace对应Java中的mapper类。id = "Base_Column_List",是你要查询的表里面的所有字段。记得username不要写成name.这个我踩过好多坑。运行的时候一直报mapper找不到对应的方法。原因是name会被识别为关键字!!不要取名sql或者java的关键字,不然你会哭的!!
id,username,passwordSELECT FROM student SELECT FROM student
3.service.java。getPageInfo方法是重点。PageHelper的核心代码就只有一句:
PageHelper.startPage(pageNum,pageSize); //开始分页很简单是不是。接下来介绍一下pageInfo自带的分页参数:
List students = studentMapper.selectPage(); //查询数据库返回数据
PageInfo pageInfo = new PageInfo<>(students); //得到数据,里面还带有分页的各个参数
pageNum=5, //查询的页数(第5页)看完后,是不是一个很完美的插件(狗头)。相关的分页参数都是很齐全的。
pageSize=3, //每页的大小
size=3,
startRow=13,
endRow=15,
total=22,//总数
pages=8, //总页数:22/3=8
list=Page{count=true, pageNum=5, pageSize=3, startRow=12, endRow=15, total=22, pages=8, reasonable=true, pageSizeZero=false},
prePage=4, //前一页
nextPage=6, //后一页
isFirstPage=false, //是否是第一页
isLastPage=false, //是否是最后一页
hasPreviousPage=true, //是否有上一页
hasNextPage=true, //是否有下一页
navigatePages=8, //导航总页数
navigateFirstPage=1, //导航第一页
navigateLastPage=8, //导航最后一页
navigatepageNums=[1, 2, 3, 4, 5, 6, 7, 8]//页数码
service代码。这里我先用getInfo拿到PageInfo。再把相关的参数和list数据拿出来。返回给controller即可。
package com.simons.service; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.simons.entity.Student; import com.simons.mapper.StudentMapper; import com.simons.util.PageRequest; import com.simons.util.PageResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; @Servicepublic class StudentService{@Autowiredprivate StudentMapper studentMapper; public List
4.controller层。findpage方法。查找分页的方案。因为分页往往带有查询参数。这边没写。
package com.simons.controller; import com.simons.service.StudentService; import com.simons.util.PageRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; //@RestController//@RequestMapping("/student") @Controller@RequestMapping(value = https://www.it610.com/article/{"/student"})public class StudentController {@Autowiredprivate StudentService studentService; @ResponseBody@RequestMapping(value="https://www.it610.com/findAll")public ListfindAll() {return studentService.findAll(); } @ResponseBody@RequestMapping(value = https://www.it610.com/article/{"/findPage"})public Object findPage(@RequestParam(name = "pageNum")String pageNum , @RequestParam(name = "pageSize") String pageSize) {PageRequest pageQuery = new PageRequest(); pageQuery.setPageNum(Integer.parseInt(pageNum)); pageQuery.setPageSize(Integer.parseInt(pageSize)); return studentService.findPage(pageQuery); }//@PostMapping(value="https://www.it610.com/findPage")//public Object findPage(@RequestBody PageRequest pageQuery) {//return studentService.findPage(pageQuery); //}}
5.utils类。一个是pageRequest请求分页,一个是pageResult返回分页的实体类
package com.simons.util; import java.util.List; /** * 分页返回结果 */public class PageResult {/*** 当前页码*/private int pageNum; /*** 每页数量*/private int pageSize; /*** 记录总数*/private long totalSize; /*** 页码总数*/private int totalPages; /*** 数据模型*/private List> content; public int getPageNum() {return pageNum; }public void setPageNum(int pageNum) {this.pageNum = pageNum; }public int getPageSize() {return pageSize; }public void setPageSize(int pageSize) {this.pageSize = pageSize; }public long getTotalSize() {return totalSize; }public void setTotalSize(long totalSize) {this.totalSize = totalSize; }public int getTotalPages() {return totalPages; }public void setTotalPages(int totalPages) {this.totalPages = totalPages; }public List> getContent() {return content; }public void setContent(List> content) {this.content = content; }}
package com.simons.util; public class PageRequest {/*** 当前页码*/private int pageNum; /*** 每页数量*/private int pageSize; public int getPageNum() {return pageNum; }public void setPageNum(int pageNum) {this.pageNum = pageNum; }public int getPageSize() {return pageSize; }public void setPageSize(int pageSize) {this.pageSize = pageSize; }}
6.spring项目启动 application.java
package com.simons; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication@MapperScan("com.simons.mapper")//@ComponentScan(basePackages={"com.simons.*"})public class SimonsStudioApplication { public static void main(String[] args) {SpringApplication.run(SimonsStudioApplication.class, args); } }
四、测试: 启动spring。输入测试地址:
http://localhost:8080/student/findPage?pageNum=5&pageSize=3
文章图片
【SpringBoot+Mybatis分页插件PageHelper实现分页效果】到此这篇关于SpringBoot+Mybatis实现分页效果的文章就介绍到这了,更多相关SpringBoot Mybatis分页内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- jQuery插件
- VueX--VUE核心插件
- 用npm发布一个包的教程并编写一个vue的插件发布
- 插件化无法获取或找到.so文件
- maven使用tomcat7插件编译jsp出错
- 超好用的PubMed文献查找管理插件—Scholarscope
- Android|Android Studio 的 Browse Repositories 下载不了插件
- Mybatis|Mybatis Plus 分页插件
- 关于ajax异步分页传输数据到页面为字符串的JS解决办法
- echarts插件-从后台请求的数据在页面显示空白的问题