idea推荐springboot+mybatis+分页查询插件之PageHelper

一.插件使用原因

在进行分页查询操作时,我们总能发现一个问题,就是分页查询这个功能的后端代码,似乎写起来较为繁琐,并且仔细研究可以发现,除了自定义的参数名不同,其他步骤可以说是几乎一致。

所以为了简化开发流程优化代码,因此有这么一款idea插件横空出世。在mybaits框架中,目前最为流行的就是PageHelper分页插件。

通过这一插件,可以大大简化mapper以及serviceimpl层的代码书写。

二.插件与原始写法的区别

一般来说,实现分页查询需要统计总记录数,使用插件可以省略这一步骤。

在进行分页查询时,我们通常通过limit这个关键字来指定分页参数,这个操作也可以通过插件省略。

我们要做的仅有写出查询语句即可。

至于为什么可以这么省略,则是因为我们调用PageHelper中的startPage方法来设置分页参数,然后我们再调用mapper接口中的方法执行正常的查询即可。

三.引入依赖

复制代码
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.4.5</version>
</dependency>

四.修改举例

mapper层:

修改前:

复制代码
@Mapper
public interface Empmapper {
    /**
     * 查询所有员工
     * @return
     */
@Select("select count(*) from emp")
    public long count();
/**
 * 分页询员工
 * @return
 */
@Select("select * from emp limit #{start},#{pageSize}")
public List<Emp> page(@Param("start") Integer start,@Param("pageSize") Integer pageSize);
}

修改后:

复制代码
/*
员工信息查询
 */
@Select("select * from emp")
    public List<Emp> list();

}

serviceimpl层:

修改前:

复制代码
@Service
public class EmpServiceImpl implements EmpService {
    @Autowired
    private Empmapper empmapper;
    @Override
    public PageBean page(Integer page, Integer pageSize) {
//1.获取总记录数
        Long total = empmapper.count();
        //2.获取分页查询结果列表
        Integer start = (page-1)*pageSize;
   List<Emp> rows = empmapper.page(start,pageSize);
        //3.封装PageBean对象并返回
    PageBean pageBean = new PageBean(total,rows);
    return pageBean;
    }

修改后:

复制代码
@Service
public class EmpServiceImpl implements EmpService {
    @Autowired
    private Empmapper empmapper;
@Override
public PageBean page(Integer page, Integer pageSize) {
    //1.设置分页参数
    PageHelper.startPage(page,pageSize);
    //2.执行查询
    List<Emp> rows =empmapper.list();//现在获取到的这个list集合其实是分页查询结果的封装类,还要强转为page类型
    Page<Emp> p = (Page<Emp>) rows;//这是强转,page是插件自带的方法

    //3.封装PageBean对象并返回
    PageBean pageBean = new PageBean(p.getTotal(),p.getResult());
    return pageBean;
}
相关推荐
Sweet锦10 分钟前
jDCS 开源项目:面向工业现场的 Modbus RTU 数据采集基础框架
java·spring boot·物联网·开源
海马11 分钟前
Spring Boot 开发知识整理
java·spring boot·后端
谢亮_vipxieliang18 分钟前
Spring Boot 3.x 从零开始——环境搭建与第一个 REST 项目
java·spring boot·后端
FYKJ_201035 分钟前
django个性化新闻推荐35173-计算机课程设计、毕业设计
java·spring boot·后端·python·架构·django·课程设计
今年下半年43 分钟前
【消息队列】Spring Boot 集成 Kafka 消息队列:确保消费完成(手动提交偏移量+幂等判断+失败重试机制)
spring boot·kafka·幂等·失败重试
计算机毕设定制辅导-无忧学长44 分钟前
《校园食堂在线订餐小程序的设计与实现》
java·vue.js·spring boot·微信小程序·uniapp·校园食堂在线订餐小程序
IT研究室1 小时前
最新计算机毕业设计选题推荐-基于spring boot的食品安全信息管理系统-网站-文档指导-Java-springboot
java·spring boot·课程设计
大牧师1 小时前
Mybatis 框架教程
java·数据库·mybatis·数据持久化·orm
code_slave(码畜)3 小时前
微服务架构落地:消息队列架构设计(上篇)——异步解耦、削峰填谷,看懂业务事件流转本质
spring boot·spring cloud·微服务·云原生·架构