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;
}
相关推荐
lang201509283 小时前
Spring Boot优雅关闭全解析
java·spring boot·后端
刘一说4 小时前
Spring Boot 启动慢?启动过程深度解析与优化策略
java·spring boot·后端
提笔了无痕5 小时前
什么是Redis的缓存问题,以及如何解决
数据库·redis·后端·缓存·mybatis
lang201509285 小时前
Spring Boot缓存机制全解析
spring boot·后端·缓存
摇滚侠5 小时前
Spring Boot 3零基础教程,WEB 开发 默认页签图标 Favicon 笔记29
java·spring boot·笔记
lang201509285 小时前
Spring Boot SQL数据库全攻略
数据库·spring boot·sql
是梦终空7 小时前
计算机毕业设计241—基于Java+Springboot+vue的爱心公益服务系统(源代码+数据库+11000字文档)
java·spring boot·vue·毕业设计·课程设计·毕业论文·爱心公益系统
wb043072018 小时前
如何开发一个 IDEA 插件通过 Ollama 调用大模型为方法生成仙侠风格的注释
人工智能·语言模型·kotlin·intellij-idea
泉城老铁10 小时前
springboot 对接发送钉钉消息,消息内容带图片
前端·spring boot·后端
qq_124987075310 小时前
基于Spring Boot的高校实习实践管理系统(源码+论文+部署+安装)
java·spring boot·后端·毕业设计