Fork me on GitHub

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

至此,结束。

posted @ 2021-01-12 14:31  叶语婷  阅读(1092)  评论(0编辑  收藏  举报