SpringBoot案例-员工管理-分页查询-PageHelper插件

分页插件PageHepler

在分页功能实现的文章中,文章传送门:SpringBoot案例-员工管理-分页查询-实现_熵240的博客-CSDN博客

其中实现分页功能的主要代码如下:

Mapper接口

package com.example.tlias.mapper;

import com.example.tlias.pojo.Emp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface EmpMapper {
    /**
     * 获取数据总数
     *
     * @return
     */
    @Select("select count(*) from emp")
    public long CountAll();

    /**
     * 获取每页数据信息
     *
     * @return
     */
    @Select("select * from emp limit #{start},#{pageSize}")
    public List<Emp> GetData(Integer start, Integer pageSize);

}

 业务实现层

package com.example.tlias.service.impl;

import com.example.tlias.mapper.EmpMapper;
import com.example.tlias.pojo.Emp;
import com.example.tlias.pojo.PageBean;
import com.example.tlias.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class EmpServiceImpl implements EmpService {
    @Autowired
    private EmpMapper empMapper;

    @Override
    public PageBean Page(Integer page, Integer pageSize) {
        // 获取总记录数
        long count = empMapper.CountAll();
        Integer start = page * pageSize - pageSize;
        // 获取分页查询结果列表
        List<Emp> list = empMapper.GetData(start, pageSize);
        // 封装PageBean对象
        PageBean pageBean = new PageBean(count, list);
        return pageBean;

    }
}

使用MyBatis的分页插件PageHepler,可以完成统计总记录数、指定分页参数的功能,我们只需要进行正常的查询功能就可,详细了解PageHepler插件见:如何使用分页插件 (pagehelper.github.io)icon-default.png?t=N6B9https://pagehelper.github.io/docs/howtouse/

具体关键代码如下

Mappper接口

package com.example.tlias.mapper;

import com.example.tlias.pojo.Emp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface EmpMapper {
    // todo 原始分页代码
    //    /**
//     * 获取数据总数
//     *
//     * @return
//     */
//    @Select("select count(*) from emp")
//    public long CountAll();
//
//    /**
//     * 获取每页数据信息
//     *
//     * @return
//     */
//    @Select("select * from emp limit #{start},#{pageSize}")
//    public List<Emp> GetData(Integer start, Integer pageSize);

    /**
     * 员工信息的查询
     * 使用pagehepler插件
     *
     * @return
     */
    @Select("select * from emp")
    public List<Emp> list();


}

业务实现层

package com.example.tlias.service.impl;

import com.example.tlias.mapper.EmpMapper;
import com.example.tlias.pojo.Emp;
import com.example.tlias.pojo.PageBean;
import com.example.tlias.service.EmpService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class EmpServiceImpl implements EmpService {
    @Autowired
    private EmpMapper empMapper;

    @Override
    // todo 原始方法代码
//    public PageBean Page(Integer page, Integer pageSize) {
//        // 获取总记录数
//        long count = empMapper.CountAll();
//        Integer start = page * pageSize - pageSize;
//        // 获取分页查询结果列表
//        List<Emp> list = empMapper.GetData(start, pageSize);
//        // 封装PageBean对象
//        PageBean pageBean = new PageBean(count, list);
//        return pageBean;
//
//    }
    // todo 使用pageHepler插件代码
    public PageBean Page(Integer page, Integer pageSize) {
        // 设置分页参数
        PageHelper.startPage(page, pageSize);
        // 执行正常查询操作
        List<Emp> empList = empMapper.list();
        Page<Emp> p = (Page<Emp>) empList;
        // 封装分页结果PageBean
        PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
        return pageBean;

    }
}

在业务实现层中,首先调用PageHepler插件中的startPage()方法,设置查询页码(page)和页面容量(pageSize),然后调用Mapper接口中的list()方法,获取所有的结果集合,然后将结果集合进行类型转化,最后将查询结果进行封装,其中参数,可直接调用pageHepler中的gettotal()和getResult()方法进行设置。

gettotal()方法获取总数据容量数,执行的SQL语句为:select count(*) from 数据表

getReault()方法获取页面显示的数据列表:执行的SQL语句为:select * from 数据表 limit #{start},#{pageSize},其中start参数以及通过传递的page参数计算出来了。

运行测试

重启SpringBoot项目,依然是启动postman进行测试,请求地址以及请求参数如下:

运行结果为:

{
    "code": 1,
    "msg": "success",
    "data": {
        "total": 17,
        "rows": [
            {
                "id": 1,
                "username": "jinyong",
                "password": "123456",
                "name": "金庸",
                "gender": 1,
                "image": "1.jpg",
                "job": 4,
                "entrydate": "2000-01-01",
                "deptId": 2,
                "creteTime": null,
                "updateTime": "2023-08-07T15:44:50"
            },
            {
                "id": 2,
                "username": "zhangwuji",
                "password": "123456",
                "name": "张无忌",
                "gender": 1,
                "image": "2.jpg",
                "job": 2,
                "entrydate": "2015-01-01",
                "deptId": 2,
                "creteTime": null,
                "updateTime": "2023-08-07T15:44:50"
            },
            {
                "id": 3,
                "username": "yangxiao",
                "password": "123456",
                "name": "杨逍",
                "gender": 1,
                "image": "3.jpg",
                "job": 2,
                "entrydate": "2008-05-01",
                "deptId": 2,
                "creteTime": null,
                "updateTime": "2023-08-07T15:44:50"
            }
        ]
    }
}

 上述两条SQL语句,我们并没有编写,这都是PageHepler插件自动进行执行的,以获取所需的参数 

小结

  • 引入依赖
  • 使用
    •         // 设置分页参数
              PageHelper.startPage(pageNum, pageSize);
              // 执行正常查询操作
              List<Emp> empList = empMapper.list();
              Page<Emp> p = (Page<Emp>) empList;

猜你喜欢

转载自blog.csdn.net/weixin_64939936/article/details/132326802