mabatis + pagehelper 实现分页分页

原理是pagehelper 内部有一个拦截器,在执行SQL语句之前,会为其拼接limit,以此来达到分页的目的。

        <!-- pagehelper -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

配置


spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/test_mybatis?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai


  main:
    allow-circular-references: true
#mybatis配置
#mapper-locations: classpath:mapper/UserMapper.xml指定加载这个文件
mybatis:
  # 配置mapper的扫描,找到所有的mapper.xml映射文件
  mapperLocations: classpath:mapper/*Mapper.xml
  # 搜索指定包别名
  typeAliasesPackage: com.angen.*.pojo

# PageHelper分页插件
pagehelper:
  helperDialect: mysql
  supportMethodsArguments: true
  params: count=countSql

server:
  port: 8081
@RestController
@RequestMapping("member")
public class MemberController {
    @Autowired
    private MemberService memberService;

    /**
     * 响应请求分页数据
     */
    protected TableDataInfo getDataTable(PageInfo<?> pageInfo) {
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(1);
        rspData.setMsg("查询成功");
        rspData.setData(pageInfo.getList());;
        rspData.setTotal(pageInfo.getTotal());
        rspData.setLastPage(pageInfo.isIsLastPage());
        return rspData;
    }

    @GetMapping("pageMember")
    public TableDataInfo pageMember(){
        PageHelper.startPage(1, 10);//这句代码一定要放在查询sql的上面,不然不会分页。
        List<Member> members=  memberService.find();
        TableDataInfo dataTable = getDataTable(new PageInfo<Member>(members));
        return dataTable;
    }

}
package com.angen.springboot_test2.util;

import java.io.Serializable;
import java.util.List;

/**
 * 表格分页数据对象
 *
 * @author nrs
 */
public class TableDataInfo implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 总记录数
     */
    private long total;

    /**
     * 列表数据
     */
    private List<?> rows;

    /**
     * 消息状态码
     */
    private int code;

    /**
     * 消息内容
     */
    private String msg;
    /**
     * 列表数据
     */
    private List<?> data;

    private boolean lastPage;

    public List<?> getData() {
        return data;
    }

    public void setData(List<?> data) {
        this.data = data;
    }

    public boolean getLastPage() {
        return lastPage;
    }

    public void setLastPage(boolean lastPage) {
        this.lastPage = lastPage;
    }

    /**
     * 表格数据对象
     */
    public TableDataInfo() {
    }

    /**
     * 分页
     *
     * @param list  列表数据
     * @param total 总记录数
     */
    public TableDataInfo(List<?> list, int total) {
        this.rows = list;
        this.total = total;
    }

    public long getTotal() {
        return total;
    }

    public void setTotal(long total) {
        this.total = total;
    }

    public List<?> getRows() {
        return rows;
    }

    public void setRows(List<?> rows) {
        this.rows = rows;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

其他代码照常写

posted @ 2022-07-28 23:53  在线电影制作人  阅读(4)  评论(0)    收藏  举报  来源