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日

相关文章

  • js与jquery获取父级元素,子级元素,兄弟元素的实现方法

    获取父级元素、子级元素以及兄弟元素是前端开发中非常常见的需求。而在JavaScript和jQuery中,实现这些功能都有相应的方法。 JavaScript获取元素 获取父级元素 在JavaScript中,可以通过parentNode属性获取元素的父级元素。例如,假设有以下HTML结构: <div> <p>Hello, world!&l…

    jquery 2023年5月28日
    00
  • Jquery ajaxsubmit上传图片实现代码

    现在让我来跟你详细讲解一下“Jquery ajaxsubmit上传图片实现代码”的完整攻略。 什么是ajaxsubmit上传图片 ajaxsubmit是jQuery插件库中的一个功能强大的插件,可以用于实现文件上传功能。因为ajaxsubmit配合后端服务器端的代码,可以使得文件实现异步上传,不需要刷新整个页面,从而提升用户的交互体验。 如何使用ajaxsu…

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

    jQuery中add()方法用法实例 add() 方法在原始选定的元素集合中添加一个或多个元素,并返回新的集合。 语法 $(selector).add(content,context) 参数 selector: 要添加的元素或者元素集合。 content: 要添加的元素或者元素集合。 context(可选): 一个DOM元素,文档或jQuery对象,用于计算…

    jquery 2023年5月28日
    00
  • 原生JS 实现的input输入时表格过滤操作示例

    通过原生JS实现的input输入时表格过滤操作,是一种比较常见的前端开发需求,可以让用户通过输入关键词来快速筛选指定表格中的数据。本文将提供一份完整的攻略,帮助网站开发者实现此功能。 步骤一:基本HTML结构 首先,在HTML中需要准备好表格结构,它应该包含表头和表身,以及需要筛选的列。例如: <table> <thead> <…

    jquery 2023年5月27日
    00
  • jquery把int类型转换成字符串类型的方法

    将int类型转换为字符串类型,可以使用jQuery中提供的方法toString()。下面是完整的攻略: 方法一:使用toString()方法转换 使用toString()方法将整型转换为字符串类型,如下所示: let num = 123; let str = num.toString(); console.log(typeof str); // 输出:str…

    jquery 2023年5月28日
    00
  • jQuery图片切换动画特效

    下面是关于“jQuery图片切换动画特效”的完整攻略: 1. 准备工作 在开始实现之前,需要进行一些准备工作: 准备jQuery库文件; 编写HTML结构,包含图片和导航按钮; 创建CSS样式,设置图片、导航按钮、容器的样式。 2. 实现过程 2.1 HTML结构 首先,需要创建一个容器,用于包含图片和导航按钮。在容器内,创建一个包含图片的div元素和一个包…

    jquery 2023年5月18日
    00
  • jQuery event.stopImmediatePropagation()方法

    jQuery event.stopImmediatePropagation()方法用于阻止当前事件的进一步传播,并阻止任何其他事件处理程序被调用。该方法通常用于在事件处理程序中停止事件的冒泡。 以下是jQuery event.stopImmediatePropagation()方法的详细攻略: 语法 event.stopImmediatePropagatio…

    jquery 2023年5月9日
    00
  • 基于jQuery对象和DOM对象和字符串之间的转化实例

    让我来详细讲解“基于jQuery对象和DOM对象和字符串之间的转化实例”的完整攻略。 1. jQuery对象和DOM对象之间的转化 首先,我们需要了解jQuery对象和DOM对象的区别。jQuery对象是一个封装好的DOM对象集合,可以方便地操作和访问DOM元素,而DOM对象则是指网页上的实际HTML元素。在jQuery中,我们可以方便地将DOM对象转化为j…

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