springboot实现分页功能的完整代码

下面是详细讲解"springboot实现分页功能的完整代码"的攻略。

1. 引入依赖

Spring Boot 提供了对分页的支持,需要引入相关依赖:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper-spring-boot-starter</artifactId>
  <version>1.3.0</version>
</dependency>

2. 配置数据源和 JPA

application.properties 文件中配置数据源和 JPA:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

3. 创建实体类和DAO对象

创建一个包含分页参数pageNumpageSize、以及结果集list的对象:

public class Page<T> {
    private int pageNum;
    private int pageSize;
    private List<T> list;
    // 其他getter和setter方法
}

同时,创建需要实现JPA接口的实体类,并创建对应的DAO对象:

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    private String name;

    private Integer age;

    // 其他getter和setter方法
}

@Repository
public interface UserDao extends JpaRepository<User, Integer> {

}

4. 实现分页功能

UserDao 接口中定义分页查询方法:

@Query(value = "select * from user u where u.name like %?1% order by u.id desc",
    countQuery = "select count(*) from user u where u.name like %?1%", nativeQuery = true)
Page<User> findByNameLike(String name, Pageable pageable);

在业务逻辑中调用该方法,并将结果封装到Page对象中:

@Service
public class UserService {
    @Autowired
    private UserDao userDao;

    public Page<User> findUserByName(String name, int pageNum, int pageSize) {
        // 构建分页对象
        Pageable pageable = PageRequest.of(pageNum - 1, pageSize, Sort.Direction.DESC, "id");
        // 执行分页查询
        Page<User> users = userDao.findByNameLike(name, pageable);
        // 封装到Page对象中
        Page<User> page = new Page<>();
        page.setList(users.getContent());
        page.setPageNum(users.getNumber() + 1);
        page.setPageSize(users.getSize());
        return page;
    }
}

示例1:查询指定页码的数据

public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/users/{name}/{pageNum}/{pageSize}")
    public Page<User> findUserByName(@PathVariable String name, @PathVariable int pageNum, @PathVariable int pageSize) {
        return userService.findUserByName(name, pageNum, pageSize);
    }
}

示例中使用 Get 请求接收参数 namepageNumpageSize,并调用 findUserByName 方法执行分页查询。

示例2:查询所有数据

public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/users")
    public Page<User> findUserByName() {
        return userService.findUserByName("", 1, Integer.MAX_VALUE);
    }
}

示例中通过 Get 请求查询所有数据,并将 pageSize 参数设置为 Integer.MAX_VALUE 以保证查询到所有数据。

以上就是Spring Boot实现分页功能的完整代码攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot实现分页功能的完整代码 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • jQWidgets jqxHeatMap title属性

    jQWidgets jqxHeatMap标题属性攻略 简介 jQWidgets 是一个基于 jQuery 的 UI 组件库,提供了富的 UI 组件和工具可于创建代化应程序。jqxHeatMap 组件用于可视化热图数据。本攻略将详介绍 jqxHeatMap 组件的 title 属性,包括如何使用和示例说明。 使用 jqxHeatMap 组件的 title 属性…

    jquery 2023年5月10日
    00
  • jQuery中filter()方法用法实例

    当我们需要从一个 jQuery 对象中筛选元素时,可以使用 filter() 方法。这个方法类似于 CSS 中的 :filter 伪类,可以根据选择器、元素、甚至函数来筛选元素。 用法说明 filter() 方法有多种用法,下面分别进行详细说明。 1. 根据选择器筛选元素 在 filter() 方法中,我们可以传入一个字符串作为参数,来根据选择器筛选元素。例…

    jquery 2023年5月27日
    00
  • 在一个页面上包含jQuery的方法都有哪些

    在一个页面上包含jQuery的方法有多种,以下是其中的几种方法: 方法一:使用CDN 使用CDN(内容分发网络)是一种常见的方法,可以在页面上包含jQuery。以下是一个示例: <!– Include jQuery from a CDN –> <script src="https://code.jquery.com/jquer…

    jquery 2023年5月9日
    00
  • jQWidgets jqxComboBox updateItem()方法

    以下是关于“jQWidgets jqxComboBox updateItem() 方法”的完整攻略,包含两个示例说明: 简介 jqxComboBox 控件提供了 updateItem() 方法,该方法用于更新下拉列表中指定选项的文本和值。通过使用 updateItem() 方法,可以在代码中动态更新下拉列表中指定选项文本和值。 详细攻略 以下是 jqxCom…

    jquery 2023年5月11日
    00
  • jQWidgets jqxDateTimeInput open()方法

    以下是关于“jQWidgets jqxDateTimeInput open()方法”的完整攻略,包含两个示例说明: 方法简介 jqxDateTimeInput 控件的 open() 方法用于打开日期时间选择器。该方法的语法如下: $("#jqxDateTimeInput").jqxDateTimeInput(‘open’); 在上述语法中…

    jquery 2023年5月10日
    00
  • jQWidgets jqxGrid主题属性

    jQWidgets jqxGrid主题属性 jQWidgets jqxGrid 是一种表格控件,用于在 Web 应用程序中创建表格。theme 属性是 jqxGrid 控件的一个属性,用于设置控件的主题。本文将详细讲解 theme 属性的使用方法,并提供两个示例说明。 属性 theme 属性用于设置 jqxGrid 控件的主题。该属性接受一个字符串作为参数,…

    jquery 2023年5月10日
    00
  • 基于MVC3方式实现下拉列表联动(JQuery)

    下面是针对“基于MVC3方式实现下拉列表联动(JQuery)”的完整攻略。 一、前期准备 在开始实现下拉列表联动之前,需要进行一些前期准备,主要包括以下几个步骤: 1. 创建MVC3应用程序 首先需要在Visual Studio中创建一个MVC3应用程序,确保具备Spiderman、MvcScaffolding等必要组件及JQuery引用。 2. 创建控制器…

    jquery 2023年5月28日
    00
  • jQWidgets jqxBarcode价值属性

    jQWidgets jqxBarcode价值属性 jQWidgets是一个基于jQuery的UI组件库,提供了丰富的UI件和工具,包括表格、图表表单、历、菜单等。其中,jqxBarcode是jQWidgets中的一个组件,可以用于生成各种类型的条码。jqxBarcode提供了value属性用于设置条形码的值。 value属性的基本语法 value属性用于设置…

    jquery 2023年5月9日
    00
合作推广
合作推广
分享本页
返回顶部