SpringBoot+Mybatis+PostMan(二):SpringBoot + Mybatis分页查询实现


 

第二篇章:用户角色权限访问控制

工具:

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 userList = userService.select();
        List 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 selectForPage1(int startIndex , int pageSize);

3. UserServiceImpl.java中:

@Override
    public List selectForPage1(int startIndex , int pageSize){
        return userMapper.selectForPage1(startIndex , pageSize) ;

    }

4. UserMapper.Java中:

//分页查询 通过开始页和数据条数进行查询
    public List selectForPage1(int startIndex , int pageSize) ;

5. UserMapper.xml中:


    

6. 前端实现为:通过参数数值控制分页首页和页面数据多少

三、通过传递当前页和页面大小两个参数进行分页,在传递之前将两个参数装载为map进行传递,进而查询所有条数据

1. UserController.java中:

/*
     * 查询所有条数据
     * */
    @GetMapping("/selectByMap")
    public Result select1(@RequestParam("currentPage")int currentPage ,
                          @RequestParam("pageSize") int pageSize){
        //PageHelper.startPage(1,2);
        //List userList = userService.select();
        Map map=new HashMap<>();
        map.put("startIndex" , (currentPage-1)*pageSize);
        map.put("pageSize" , pageSize) ;
        List 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 selectForPage2(Map map);

3. UserServiceImpl.java中:

 public List selectForPage2(Map map){
        
        return userMapper.selectForPage2(map);
    }

4. UserMapper.Java中:

//分页查询  通过map进行查询
    public List selectForPage2(Map map);

5. UserMapper.xml中:

 
    

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 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 selectForPage3(PageBean pageBean);

3. UserServiceImpl.java中:

public Integer selectCount(){
        return userMapper.selectCount() ;
    }

    public List selectForPage3(PageBean pageBean){
        return userMapper.selectForPage3(pageBean) ;
    }

4. UserMapper.Java中:

 public Integer selectCount();

    public List selectForPage3(PageBean pageBean);

5. UserMapper.xml中:

  
    <select id="selectCount" resultType="java.lang.Integer">
        select count(*) from sys_user
    select>

    
    <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 map = new HashMap<>() ;
        map.put("startIndex" , (currentPage-1)*pageSize);
        map.put("pageSize" , pageSize) ;
        map.put("keywords" , keywords) ;
        List 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 selectForPage4(Map map) ;

    public Integer selectCount2(String keywords) ;

3. UserServiceImpl.java中:

 public List selectForPage4(Map map){
        return userMapper.selectForPage4(map) ;
    }

    public Integer selectCount2(String keywords){
        return userMapper.selectCount2(keywords) ;
    }

4. UserMapper.Java中:

//模糊查询符合条件条数
    public Integer selectCount2(String keywords);

    //分页加模糊查询
    public List selectForPage4(Map map);

5. UserMapper.xml中:

 
    <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配置等见上一篇博文,上一篇都有详细的介绍。

至此,结束。

相关