PageHelper 分页 可以单表和联表

配置: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);
    }
}

  

 

猜你喜欢

转载自www.cnblogs.com/ynhk/p/10875779.html
今日推荐