springboot-mybatis的分页查询的接口

一、安装依赖


   com.github.pagehelper
   pagehelper-spring-boot-starter
   1.4.6

二、代码定义

分页对象类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageBean implements Serializable {

    // 总记录数
    private Long total;

    // 返回参数列表
    private List rows;


}

mapper层

直接查询所有数据即可,剩下的交给分页器

@Mapper
public interface EmpMapper {


    // 查询部门信息
    @Select("select * from emp")
    List list();



}

业务逻辑层

PageHelper.startPage(page, pageSize); 是 MyBatis 的一个分页插件(PageHelper)提供的方法调用,用于在数据库查询中实现分页功能。这个方法的作用是告诉 PageHelper 开始对接下来的查询进行分页处理。

具体来说,这个方法做了以下几件事情:

  1. 设置分页参数:它会根据传入的 pagepageSize 参数,自动计算出数据库查询的起始行号(offset)和每页的记录数(limit)

  2. 重写查询语句:在底层,PageHelper 会拦截你的查询语句,自动在原有的查询语句上添加分页参数,从而实现数据库的分页查询。这样,你就无需手动编写复杂的分页查询语句。

  3. 返回分页结果:分页查询完成后,PageHelper 会将查询结果封装成一个 Page 对象包含了分页信息和查询结果列表

 @Autowired
    EmpMapper empMapper;

    @Override
    public PageBean page(Integer page, Integer pageSize) {

        // 1、设置分页参数
        PageHelper.startPage(page, pageSize);
        // 2、执行分页查询语句
        List empList = empMapper.list();
        // 3、获取分页结果
        Page p = (Page) empList;

        // 4、封装pageBean对象,注意对象需要序列化
        // p.getTotal() 获取结果条数,p.getResult()获取查询结果
        PageBean pageBean = new PageBean(p.getTotal(), p.getResult());

        return pageBean;

    }

控制层

  @ResponseBody
    @GetMapping
    public Result page( @RequestParam(defaultValue = "1") Integer page,
                       @RequestParam(defaultValue = "10") Integer pageSize){

        // 传入页码和每页的条数
        PageBean pageBean = empService.page(page,pageSize);
        
        return Result.success(pageBean);

    }

三、注意实体类需要序列化

依赖


   com.fasterxml.jackson.core
   jackson-databind

实体类

import com.fasterxml.jackson.annotation.JsonAutoDetect;

@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public class Emp {
    // ...
}

如果不序列化,可能产生以下错误:

No serializer found for class com.demo.tliaswebmanagement.pojo.Emp and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)

你可能感兴趣的:(JavaWeb,spring,boot,mybatis,java,后端,spring)