1. 程式人生 > >PageHelper 分頁 可以單表和聯表

PageHelper 分頁 可以單表和聯表

ble bsp artifact user erb pageinfo amp 總頁數 ali

配置:1.依賴(註意和mybatis-spring-boot-starter的版本對應)==》2.配置文件==》3.返回的對象類(非必須)

1.依賴

<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!--9.mybatis的PageHelper-->
        <!--註意和mybatis-spring-boot-starter的版本對應-->
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.5</version> </dependency>

2.配置文件

package com.test.springboot.config;

import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

/**
 * @Company:wftdlx
 * @Author: wjf
 * @Description:
 * @Date: Created in 10:48 2019/5/16
 */
@Configuration
public class PageHelperConfig {

    /**
     * 註入pagehelper配置
     *
     * @return
     */
    @Bean
    public PageHelper getPageHelper() {
        PageHelper pageHelper = new PageHelper();
        Properties properties = new Properties();
        properties.setProperty("helperDialect", "mysql");
        properties.setProperty("reasonable", "true");
        properties.setProperty("supportMethodsArguments", "true");
        properties.setProperty("params", "count=countSql");
        pageHelper.setProperties(properties);

        //添加插件
        //new SqlSessionFactoryBean().setPlugins(new Interceptor[]{pageHelper});
        return pageHelper;
    }
    
}

3.返回值對象類(可以不寫)

package com.test.springboot.bean;

import lombok.Data;
import com.github.pagehelper.Page;
import java.io.Serializable;
import java.util.List;

@Data
public class PageHelperResult<T> implements Serializable {
    /**
     * 序列化id
     */
    private static final long serialVersionUID = -6477868212171605239L;

    /**
     * 總記錄數
     */
    private Long total;

    /**
     * 結果集
     */
    private List<T> rows;

    /**
     * 頁數
     */
    private Integer pageNum;

    /**
     * 每頁記錄數
     */
    private Integer pageSize;

    /**
     * 總頁數
     */
    private Integer pages;

    public PageHelperResult(List<T> rows) {
        init(rows);
    }

    /**
     * 初始化
     *
     * @param rows
     */
    private void init(List<T> rows) {
        if (rows instanceof Page) {
            Page<T> page = (Page<T>) rows;
            this.total = page.getTotal();
            this.rows = page.getResult();
            this.pageNum = page.getPageNum();
            this.pageSize = page.getPageSize();
            this.pages = page.getPages();
        }
    }

}

4.controller測試類

package com.test.springboot.example.controller;


import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.test.springboot.bean.PageHelperResult;
import com.test.springboot.bean.ResultModel;
import com.test.springboot.example.ennity.User;
import com.test.springboot.example.mapper.UserMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.List;

/**
 * @Company:wftdlx
 * @Author: wjf
 * @Description:
 * @Date: Created in 10:51 2019/5/16
 */
@Controller
@RequestMapping("/pageHelper")
public class PageHelperController {
    @Resource
    UserMapper UserMapper;

    //1.返回專門分頁對象
    //分頁代碼PageHelper.startPage(pageNo,pageSize);只對其後的第一個查詢有效。如把代碼改為下面這樣,添加一個查詢
    @RequestMapping(value = "/page/{page}/{pagesize}", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
    @ResponseBody //返回 異步json數據
    public PageHelperResult<User> selectSysUser(@PathVariable(name = "page") Integer page, @PathVariable(name = "pagesize") Integer pagesize) {
        // 這裏寫死pageNum和PageSize
        // 排序實現: 數據庫字段 + " desc" 或 數據庫字段 + " asc"
        //String orderBy = 排序字段 + " desc";//按照排序字段 倒序 排序  註意desc前空格
        String orderBy = "id" + "desc";
        PageHelper.startPage(page, pagesize,orderBy);
        List<User> users = UserMapper.selectList(null);
        PageHelperResult<User> pageInfo = new PageHelperResult<User>(users);
        return pageInfo;
    }

    //2.返回標準分頁對象
    @RequestMapping(value = "/page2/{page}/{pagesize}", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
    @ResponseBody //返回 異步json數據
    public ResultModel selectSysUser2(@PathVariable(name = "page") Integer page, @PathVariable(name = "pagesize") Integer pagesize) {
        // 這裏寫死pageNum和PageSize
        // 排序實現: 數據庫字段 + " desc" 或 數據庫字段 + " asc"
        PageHelper.startPage(page, pagesize);
        List<User> users = UserMapper.selectList(null);
        Page<User> pageMessage = (Page<User>) users;
        long total = pageMessage.getTotal();
        List<User> results = pageMessage.getResult();
        int pageNum = pageMessage.getPageNum();
        int pageSize = pageMessage.getPageSize();
        int pages = pageMessage.getPages();

        //正確結果
        Object[] result = {total, results, pageNum, pageSize, pages};
        return new ResultModel(ResultModel.SUCCESS, "分頁查詢成功", result);
    }
}

  

 

PageHelper 分頁 可以單表和聯表