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配置等見上一篇博文,上一篇都有詳細的介紹。

至此,結束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM