Spring Boot教程(八):Spring Boot集成pagehelper分页插件

分享一个零基础,通俗易懂,而且非常风趣幽默的人工智能教程(如不能直接点击访问,请以“右键”->“在新标签页中打开链接”方式打开)网站,网址:https://www.cbedai.net/gnailoug/

一、项目准备

直接使用上个章节的源码,Spring Boot教程(七):Spring Boot集成druid连接池

为了方便,后面章节不再根据章节内容修改包名和启动类名,所以先对上节源码做以下修改:

1、包名修改

将包名com.songguoliang.mybatis修改为com.songguoliang.springboot

2、修改启动类

将启动类DruidApplication修改为Application,并且将注解@MapperScan("com.songguoliang.mybatis.mapper")扫描包改为@MapperScan("com.songguoliang.springboot.mapper")

package com.songguoliang.springboot;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @Description
 * @Author sgl
 * @Date 2018-05-02 14:51
 */
@SpringBootApplication
@MapperScan("com.songguoliang.springboot.mapper")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

3、将application.properties配置文件中的mybatis.type-aliases-package=com.songguoliang.mybatis.entity改为mybatis.type-aliases-package=com.songguoliang.springboot.entity

二、添加pagehelper依赖



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

三、配置文件修改

在application.properties配置文件中添加以下配置:

#pagehelper分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql

四、修改Controller

修改UserController里的lists方法:

@GetMapping("/users")
public List lists(@RequestParam(defaultValue = "1") int pageNo, @RequestParam(defaultValue = "10") int pageSize) {
    PageHelper.startPage(pageNo,pageSize);
    return userService.getUsers();
}
  • pageNopageSize两个参数是为了接收前台传过来的值,并且通过defaultValue为这两个参数提供了默认值。
  • 分页主要代码:PageHelper.startPage(pageNo,pageSize);

需要注意的是,分页代码PageHelper.startPage(pageNo,pageSize);只对其后的第一个查询有效。如把代码改为下面这样,添加一个查询,则第二个查询并没有分页

@GetMapping("/users")
public List lists(@RequestParam(defaultValue = "1") int pageNo, @RequestParam(defaultValue = "10") int pageSize) {
    PageHelper.startPage(pageNo,pageSize);
    userService.getUsers();//这个查询会分页
    return userService.getUsers();//这个查询不会分页
}

五、测试

启动服务,浏览器输入http://localhost:8080/users?pageNo=1&pageSize=5,可以看到只查询了第一页5条数据:
Spring Boot教程(八):Spring Boot集成pagehelper分页插件_第1张图片

浏览器输入http://localhost:8080/users,这是因为没有传参数,后台取默认值,查询第一页的10条数据。
Spring Boot教程(八):Spring Boot集成pagehelper分页插件_第2张图片

六、返回分页信息

上面我们返回的只是数据,而总页数、当前页数、每页条数等分页相关的信息并没有返回。

下面我们对controller、service、mapper里的方法的返回值做一下修改,将List改为Page,Pagecom.github.pagehelper包里的类,它是java.util.ArrayList的子类。

1、UserMapper里将返回值修改为Page

package com.songguoliang.springboot.mapper;

import com.github.pagehelper.Page;
import com.songguoliang.springboot.entity.User;

/**
 * @Description
 * @Author sgl
 * @Date 2018-05-02 15:02
 */
public interface UserMapper {

    Page getUsers();
}

2、UserService里将返回值修改为Page

public Page getUsers() {
    return userMapper.getUsers();
}

3、用com.github.pagehelper.PageInfo类封装Page数据

@GetMapping("/users")
public PageInfo lists(@RequestParam(defaultValue = "1") int pageNo,@RequestParam(defaultValue = "10") int pageSize) {
    PageHelper.startPage(pageNo,pageSize);
    PageInfo pageInfo = new PageInfo<>(userService.getUsers());
    return pageInfo;
}

4、重启服务,浏览器输入http://localhost:8080/users?pageNo=1&pageSize=5,可以看到只查询了第一页5条数据,并且包含了分页相关的信息:
Spring Boot教程(八):Spring Boot集成pagehelper分页插件_第3张图片

分享一个零基础,通俗易懂,而且非常风趣幽默的人工智能教程(如不能直接点击访问,请以“右键”->“在新标签页中打开链接”方式打开)网站,网址:https://www.cbedai.net/gnailoug/





源码:
github
码云

你可能感兴趣的:(springboot,Spring,Boot学习笔记)