一.插件使用原因
在进行分页查询操作时,我们总能发现一个问题,就是分页查询这个功能的后端代码,似乎写起来较为繁琐,并且仔细研究可以发现,除了自定义的参数名不同,其他步骤可以说是几乎一致。
所以为了简化开发流程优化代码,因此有这么一款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;
}