SpringBoot+Mybatis+PostMan(二):SpringBoot + Mybatis分页查询实现
Springboot+Mybatis+redis+postman项目实战总目录*
SpringBoot+Mybatis+PostMan(三):学习过滤器
SpringBoot+Mybatis+PostMan(四):学习拦截器
SpringBoot+Mybatis+PostMan(五):token登陆认证过程一(token生成与认证)
SpringBoot+Mybatis+PostMan(五):token登陆认证过程二(redis缓存引入)
SpringBoot+Mybatis+PostMan(六):token登陆认证过程三(redis封装与干掉原来session,避免用户重复登陆)
番外篇:SpringBoot 用户注册时经MD5加密存入数据库
第二篇章:用户角色权限访问控制
SpringBoot+Mybatis+PostMan(七):用户角色权限访问控制入门(数据模拟实现,不带数据库)
SpringBoot+Mybatis+PostMan(八):用户角色权限访问控制一(数据库用户角色表查询组合)
SpringBoot+Mybatis+PostMan(九):用户角色权限访问控制二(加入资源表和资源角色对应表)
SpringBoot+Mybatis+PostMan(十):用户角色权限访问控制三(禁用session、启用token并集成redis)
工具:
idea2019
前端模拟实现:postman
分页查询实现 先做准备工作。
一、准备工作
1. 定义PageBean实体类,记录分页信息
package testdemo.util; public class PageBean { private Integer currentPage; private Integer startIndex; private Integer pageSize=5; private Integer totalCount; private Integer totalPage; public Integer getCurrentPage() { return currentPage; } public void setCurrentPage(Integer currentPage) { this.currentPage = currentPage; this.startIndex = (this.currentPage-1)*this.pageSize ; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public Integer getTotalCount() { return totalCount; } public void setTotalCount(Integer totalCount) { this.totalCount = totalCount; this.totalPage = (int)Math.ceil((this.totalCount*1.0/this.pageSize)); } public Integer getTotalPage() { return totalPage; } public void setTotalPage(Integer totalPage) { this.totalPage = totalPage; } public Integer getStartIndex() { return startIndex; } public void setStartIndex(Integer startIndex) { this.startIndex = startIndex; } }
准备工作完成,进行分页查询。
二、通过传递当前页和页面大小两个参数进行分页,进而查询所有条数据
1. UserController.java中:
/* * 分页查询所有条数据 * */ @GetMapping("/selectStartIndexAndPageSize") public Result select(@RequestParam("currentPage")int currentPage , @RequestParam("pageSize") int pageSize){ //PageHelper.startPage(1,2); //List<User> userList = userService.select(); List<User> selectForPage = userService. selectForPage1((currentPage-1)*pageSize, pageSize) ; for (User user : selectForPage) { System.out.println(user); } return Results.successWithData(selectForPage, BaseEnums.SUCCESS.code(),BaseEnums.SUCCESS.desc()); }
2. UserService.java中:
/* * 分页查询1 * @param 起始页面 * @param 数据条数 * */ public List<User> selectForPage1(int startIndex , int pageSize);
3. UserServiceImpl.java中:
@Override public List<User> selectForPage1(int startIndex , int pageSize){ return userMapper.selectForPage1(startIndex , pageSize) ; }
4. UserMapper.Java中:
//分页查询 通过开始页和数据条数进行查询 public List<User> selectForPage1(int startIndex , int pageSize) ;
5. UserMapper.xml中:
<!--查询1--> <select id="selectForPage1" resultType="User"> select * from sys_user limit #{param1},#{param2} </select>
6. 前端实现为:通过参数数值控制分页首页和页面数据多少
三、通过传递当前页和页面大小两个参数进行分页,在传递之前将两个参数装载为map进行传递,进而查询所有条数据
1. UserController.java中:
/* * 查询所有条数据 * */ @GetMapping("/selectByMap") public Result select1(@RequestParam("currentPage")int currentPage , @RequestParam("pageSize") int pageSize){ //PageHelper.startPage(1,2); //List<User> userList = userService.select(); Map<String , Object> map=new HashMap<>(); map.put("startIndex" , (currentPage-1)*pageSize); map.put("pageSize" , pageSize) ; List<User> selectForPage2 = userService.selectForPage2(map) ; for (User user : selectForPage2) { System.out.println(user); } return Results.successWithData(selectForPage2, BaseEnums.SUCCESS.code(),BaseEnums.SUCCESS.desc()); }
2. UserService.java中:
/* * 分页查询2 * @param map类型 * */ public List<User> selectForPage2(Map<String, Object> map);
3. UserServiceImpl.java中:
public List<User> selectForPage2(Map<String, Object> map){ return userMapper.selectForPage2(map); }
4. UserMapper.Java中:
//分页查询 通过map进行查询 public List<User> selectForPage2(Map<String, Object> map);
5. UserMapper.xml中:
<!-- 查询2--> <select id="selectForPage2" resultType="User"> select * from sys_user limit #{startIndex},#{pageSize} </select>
6. 前端实现为:通过参数数值控制分页首页和页面数据多少
四、通过传递当前页和页面大小两个参数进行分页,在传递之前将两个参数装载到pageBean对象中进行传递,进而查询所有条数据
1. UserController.java中:
/* * 查询所有条数据 * */ @GetMapping("/selectByPageBean") public Result selectByPageBean(@RequestParam("currentPage")int currentPage , @RequestParam("pageSize") int pageSize){ PageBean pageBean = new PageBean() ; pageBean.setCurrentPage(currentPage); pageBean.setPageSize(pageSize); //查询总条数 Integer count = userService.selectCount() ; //放到pageBean中 pageBean.setTotalCount(count); List<User> userList = userService.selectForPage3(pageBean) ; for (User user : userList) { System.out.println(user); } System.out.println("当前第"+pageBean.getCurrentPage()+"页,共"+count+"条"); return Results.successWithData(userList, BaseEnums.SUCCESS.code(),BaseEnums.SUCCESS.desc()); }
2. UserService.java中:
//查询总条数 public Integer selectCount(); /* * 分页查询3 对象 * */ public List<User> selectForPage3(PageBean pageBean);
3. UserServiceImpl.java中:
public Integer selectCount(){ return userMapper.selectCount() ; } public List<User> selectForPage3(PageBean pageBean){ return userMapper.selectForPage3(pageBean) ; }
4. UserMapper.Java中:
public Integer selectCount(); public List<User> selectForPage3(PageBean pageBean);
5. UserMapper.xml中:
<!-- 查询总条数--> <select id="selectCount" resultType="java.lang.Integer"> select count(*) from sys_user </select> <!-- 查询4--> <select id="selectForPage3" resultType="User"> select * from sys_user limit #{startIndex},#{pageSize} </select>
6. 前端实现为:通过参数数值控制分页首页和页面数据多少
五、通过传递当前页和页面大小两个参数进行分页,同时还要传递一个keywords,用于模糊查询匹配,在传递之前将三个参数装载到map对象中进行传递,进而查询所有条数据。
1. UserController.java中:
/* * 模糊查询后分页查询 * */ @GetMapping("/selectByLike") public Result selectByLike(@RequestParam("keywords")String keywords , @RequestParam("currentPage")int currentPage , @RequestParam("pageSize") int pageSize){ PageBean pageBean = new PageBean() ; pageBean.setCurrentPage(currentPage); pageBean.setPageSize(pageSize); //查询总条数 Integer count = userService.selectCount2(keywords) ; //放到pageBean中 pageBean.setTotalCount(count); Map<String , Object> map = new HashMap<>() ; map.put("startIndex" , (currentPage-1)*pageSize); map.put("pageSize" , pageSize) ; map.put("keywords" , keywords) ; List<User> userList = userService.selectForPage4(map) ; for (User user : userList) { System.out.println(user); } System.out.println("当前第"+pageBean.getCurrentPage()+"页,共"+count+"条"); return Results.successWithData(userList, BaseEnums.SUCCESS.code(),BaseEnums.SUCCESS.desc()); }
2. UserService.java中:
//模糊查询 public List<User> selectForPage4(Map<String, Object> map) ; public Integer selectCount2(String keywords) ;
3. UserServiceImpl.java中:
public List<User> selectForPage4(Map<String, Object> map){ return userMapper.selectForPage4(map) ; } public Integer selectCount2(String keywords){ return userMapper.selectCount2(keywords) ; }
4. UserMapper.Java中:
//模糊查询符合条件条数 public Integer selectCount2(String keywords); //分页加模糊查询 public List<User> selectForPage4(Map<String, Object> map);
5. UserMapper.xml中:
<!-- 查询5--> <select id="selectForPage4" resultType="User"> select * from sys_user where username like "%"#{keywords}"%" limit #{startIndex},#{pageSize} </select> <!-- 模糊查询查询总条数--> <select id="selectCount2" resultType="java.lang.Integer" parameterType="java.lang.String"> select count(*) from sys_user where username like "%"#{keywords}"%" </select>
6. 前端实现为:通过参数数值控制分页首页和页面数据多少
这样一来,四种分页查询方式就介绍完了,基础的数据库配置、spring boot配置等见上一篇博文,上一篇都有详细的介绍。
至此,结束。