Advertisement

分页查询:pageHelper

阅读量:

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 分页:插件pageHelper
  • 一、 使用
  • 二、分页查询实现
    • 1.引入库
      • 3.4 分页查询实现

分页:插件pageHelper

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、 使用

1.导入依赖

复制代码
    <!--PageHelper分页插件-->
    <dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.4.0</version>
    </dependency>

2.在application.yml文件配置信息

复制代码
    pagehelper:
      # 自动获取方言
      auto-dialect: true
      # 合理化分页
      reasonable: true

3.测试(pageHelper的基本使用)

复制代码
    // 1、EmployeeMapper(添加一个findByPage方法)
    public interface EmployeeMapper {
    
    List<Employee> findByPage(String name);
    
    }
复制代码
    // 2、EmployeeMapper.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.mapper.EmployeeMapper">
    <select id="findByPage" resultType="com.itheima.reggie.entity.Employee">
        select * from employee
        <where>
            <if test="name != null and name != ''">
                and name like concat('%',#{name},'%')
            </if>
        </where>
    </select>
    </mapper>
复制代码
    // 3、测试类
    @SpringBootTest
    public class PageHelperTest {
    
    @Autowired
    EmployeeMapper mapper;
    
    @Test
    public void test0() {
        int pageNum = 1;
        int pageSize = 2;
        String name = "to";
    
        //1.设置分页参数
        PageHelper.startPage(pageNum,pageSize);
    
        //2.调用mapper的查询操作(紧跟着上面设置分页参数的第一条查询语句会被自动分页)
        List<Employee> list = mapper.findByPage(name);
    
        //3.用pageInfo封装查询结果list 就可以获取所有的分页属性
        PageInfo<Employee> pageInfo = new PageInfo<>(list);
        System.out.println("总页数:"+pageInfo.getPages());
        System.out.println("当前页数据集合:"+pageInfo.getList());
        System.out.println("总记录数:"+pageInfo.getTotal());
        System.out.println("当前页:"+pageInfo.getPageNum());
        System.out.println("每页记录数:"+pageInfo.getPageSize());
    
    
    }
    }

二、分页查询实现

1.引入库

3.4 分页查询实现

举例:具体的请求信息如下:

请求 说明
请求方式 GET
请求路径 /employee/page
请求参数 page , pageSize , name
响应
{“code”:1,“data”:page对象}

那么查询完毕后我们需要给前端返回什么样的结果呢?

查询返回的结果数据data中应该封装两项信息, 分别为: records 封装分页列表数据, total 中封装符合条件的总记录数。 那我们则需要自定义一个Page类必须包含records 与total两个属性的

Page实体类的编写

最好放在common包下.

复制代码
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Page<T>  {
    private List<T> records;
    private long total;
    }

EmployeeController控制器

复制代码
    @RestController
    @RequestMapping("/employee")
    public class EmployeeController {
    
    @Autowired
    private EmployeeService employeeService;
    
       
    
     /** * 作用: 员工列表分页
     * @param page  当前页
     * @param pageSize  页面大小
     * @param name  用户名
     * @return
     */
    @GetMapping("/page")
    public R<Page<Employee>> page(Integer page,Integer pageSize,String name){
        Page<Employee> pageResult=  employeeService.findByPage(page,pageSize,name);
        return R.success(pageResult);
    }
    }

EmployeeService接口

复制代码
    ;
    
    public interface EmployeeService {
     
     /** * 作用: 员工列表分页
     * @param page  当前页
     * @param pageSize  页面大小
     * @param name  用户名
     * @return
     */
    Page<Employee> findByPage(Integer page, Integer pageSize, String name);
    }

EmployeeServiceImpl接口实现类

复制代码
    @Service
    public class EmployeeServiceImpl implements EmployeeService {
    
    
    @Autowired
    private EmployeeMapper employeeMapper;
      
    
       /** * 作用: 员工列表分页
     * @param page  当前页
     * @param pageSize  页面大小
     * @param name  用户名
     * @return
     */
    @Override
    public Page<Employee> findByPage(Integer page, Integer pageSize, String name) {
        //1. 设置当前页与页面大小
        PageHelper.startPage(page,pageSize);
    
        //2. 查询数据
        List<Employee> employeeList = employeeMapper.findByName(name);
    
        //3. 创建PageINfo对象,把list集合传入
        PageInfo<Employee> pageInfo = new PageInfo(employeeList);
    
        //4. 把pageinfo的信息转移到Page对象
        Page<Employee> pageResult = new Page<>(pageInfo.getList(),pageInfo.getTotal());
    
        return pageResult;
    }
    }

全部评论 (0)

还没有任何评论哟~