java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > PageHelper在springboot的使用

PageHelper在springboot中的使用方式

作者:知识浅谈

这篇文章主要介绍了PageHelper在springboot中的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

PageHelper的使用方法

第一步、导入相对应的坐标和包

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>${pagehelper.version}</version>
</dependency>

第二步、配置文件的配置

pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true
  params: count=countsql

参数解释:

第三步、方法调用

使用PageHelper.startPage 静态方法调用startPage :

特点:

1.静态方法,传递两个参数(当前页码,每页查询条数)

2.使用pageHelper 分页的时候,不再关注分页语句,查询全部的语句

3.自动的对PageHelper.startPage 方法下的第一个sql 查询进行分页

PageHelper.startPage(1,5);
//紧跟着的第一个select 方法会被分页
List list = countryMapper.findAll();

也就是说再Service层PageHelper.startPage(1,5);语句后一定是紧跟查询语句。

private void selectAllUsers(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {

        String num=request.getParameter("num");

        if(null==num)
        {
            num="1";
        }

        // Page PageInfo

        Page<?> page=PageHelper.startPage(Integer.parseInt(num),5);  //设置第几条记录开始,多少条记录为一页

        //通过userService获取user的信息,其sql语句为"select * from user" 但因pagehelp已经注册为插件,所以pagehelp会在原sql语句上增加limit,从而实现分页
        List<Person> persons=userService.getAllUsersBypageHelper();  //因而获得的是分好页的结果集
         
        PageInfo<?> pageHelper=page.toPageInfo(); //获取页面信息的对象,里面封装了许多页面的信息 如:总条数,当前页码,需显示的导航页等等
           request.setAttribute("persons",persons);     request.setAttribute("pagehelper",pageHelper);
       request.getRequestDispatcher("/persons.jsp").forward(request,response);

    }
 public PageResult<List<ProjectListVO>> queryByProjectName(Integer pageNo, Integer pageSize, String projectName) {
        PageResult<List<ProjectListVO>> result = new PageResult<>();
        try {
            PageHelper.startPage(pageNo, pageSize);
            List<ProjectListVO> projectVOList = projectMapper.queryByProjectName(projectName); //设置完上边的PageHelper之后查询的时候,查询语句会自动加入 limits startpage   count,查询结果就是正确的结果
            PageInfo<ProjectListVO> pageInfo = new PageInfo<>(projectVOList);
            result.setTotal(pageInfo.getTotal());
            result.setPages(pageInfo.getPages());
            result.setCurrent(pageInfo.getPageNum());
            result.setSize(pageInfo.getPageSize());
            result.setResult(projectVOList);
            result.success("查询成功!");
        } finally {
            PageHelper.clearPage();
        }

        return result;
    }

关于PageInfo这个类,源码如下:

public class PageInfo implements Serializable {
private static final long serialVersionUID = 1L;
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//由于startRow 和endRow 不常用,这里说个具体的用法
//可以在页面中"显示startRow 到endRow 共size 条数据"
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List list;
//前一页
private int prePage;
//下一页
private int nextPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
传智播客——专注于Java、.Net 和Php、网页平面设计工程师的培训
北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090
//所有导航页号
private int[] navigatepageNums;
//导航条上的第一页
private int navigateFirstPage;
//导航条上的最后一页
private int navigateLastPage;
}

第四步、关于controller中的使用

    @ApiOperation("根据项目名查询项目信息")
    @RequestMapping(value = "/queryByProjectName", method = RequestMethod.GET)
    public PageResult<List<ProjectListVO>> queryByProjectName(@RequestParam(defaultValue = "1", value = "pageNo") Integer pageNo,
                                                              @RequestParam(defaultValue = "10", value = "pageSize") Integer pageSize,
                                                              @RequestParam(name = "projectName") String projectName) {
        if (StringUtils.isEmpty(projectName)) {
            throw new DareException("参数错误!");
        }
        PageResult<List<ProjectListVO>> result = new PageResult<>();
        try {
            projectName = "%" + projectName + "%";
//            System.out.println(projectName);
            result = projectService.queryByProjectName(pageNo, pageSize, projectName);
        } catch (Exception e) {
            e.printStackTrace();
            log.error(e.getMessage());
            result.setSuccess(false);
            result.setMessage("操作失败!");
        }
        return result;
    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文