Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页示例

下面我来详细讲解一下“Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页示例”的完整攻略。

1. 环境准备

首先,我们需要准备好以下环境:

  • JDK 1.8
  • Spring Boot 2.3.4.RELEASE
  • Spring Data JPA 2.3.4.RELEASE
  • MySQL 8.0.21
  • Maven 3.6.x
  • IDE,如Eclipse或IntelliJ IDEA

2. Maven配置

在pom.xml中添加以下依赖,其中包括 Spring Boot、Spring Data JPA 和 MySQL 驱动:

<!-- Spring Boot -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- Spring Data JPA -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<!-- MySQL Connector -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

3. 数据库配置

在application.properties中配置MySQL数据库连接信息:

spring.datasource.url=jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.jpa.database=mysql
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

4. 实体类和Repository类

编写一个User实体类,其中包含id、姓名和年龄等属性,并创建对应的 UserRepository 继承自 JpaRepository:

@Entity
@Table(name = "tbl_user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(nullable = false)
    private String name;
    @Column(nullable = false)
    private Integer age;
    // getter、setter省略...
}

public interface UserRepository extends JpaRepository<User, Long> {
}

5. Service和Controller

创建 UserService 和 UserController,其中 UserService 包含查询所有用户的方法 findAll(),UserController 提供分页查询和返回页面的方法 findAllAjax() 和 findAll():

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public List<User> findAll() {
        return userRepository.findAll();
    }
}

@RestController
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/findAllAjax")
    public List<User> findAllAjax(@RequestParam(value = "page", defaultValue = "1") Integer pageNumber,
                                  @RequestParam(value = "size", defaultValue = "10") Integer pageSize) {
        Sort sort = Sort.by(Sort.Direction.DESC, "id");
        Pageable pageable = PageRequest.of(pageNumber - 1, pageSize, sort);
        Page<User> page = userRepository.findAll(pageable);
        return page.getContent();
    }

    @GetMapping("/findAll")
    public String findAll(Model model) {
        List<User> userList = userService.findAll();
        model.addAttribute("userList", userList);
        return "index";
    }
}

6. 前端JSP页面

在index.jsp中加入jquery.pagination.js实现分页功能。示例代码如下:

<table class="table">
    <thead>
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>年龄</th>
        </tr>
    </thead>
    <tbody id="userData"></tbody>
</table>
<!-- 分页区域 -->
<div style="text-align: center;">
    <ul id="pagination" class="pagination"></ul>
</div>
<script src="static/jquery-3.3.1.min.js"></script>
<!-- jquery.pagination.js -->
<script src="static/jquery.pagination.js"></script>
<script>
$(function() {
    loadPage(1);
    $('#pagination').pagination({
        total: 100, /* 后端返回的总条数 */
        pageSize: 10, /* 每页显示的条数 */
        pageNumber: 1, /* 当前页码 */
        showInfo: true,
        infoFormat: '{start}-{end}/{total}',
        showJump: true,
        jumpBtnText: '跳转',
        showPageSizes: true,
        pageSizeItems: [10, 20, 50, 100],
        onPageClick: function(pageNumber, event) {
            loadPage(pageNumber);
        }
    });
});

function loadPage(pageNumber) {
    $.ajax({
        type: 'GET',
        url: '/findAllAjax?page='+pageNumber+'&size=10',
        dataType: 'json',
        success: function(result) {
            var html = '';
            for (var i in result) {
                html += '<tr><td>'+result[i].id+'</td><td>'+result[i].name+'</td><td>'+result[i].age+'</td></tr>';
            }
            $('#userData').html(html);
        }
    });
}
</script>

7. 运行项目

在IDE中启动项目,访问http://localhost:8080/findAll,即可看到返回的用户列表和分页区域。通过点击分页区域中的页码可以进行不同页码的查询。

以上就是基于Spring Data JPA、SpringMVC和jquery.pagination.js实现分页的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页示例 - Python技术站

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

相关文章

  • java实现随机数生成器

    生成随机数是我们在Java程序中经常遇到的问题,Java提供了一些内置的方法来生成伪随机数,我们也可以使用外部库来实现更高级别的随机化过程。本文将为大家介绍Java实现随机数生成器的完整攻略。 生成伪随机数 Java为我们提供了一些内置的类,比如Random和Math,来生成伪随机数。 使用Random类 Random类是Java中最基本的生成随机数的类之一…

    Java 2023年5月23日
    00
  • JS+DIV+CSS实现仿表单下拉列表效果

    下面是JS+DIV+CSS实现仿表单下拉列表效果的完整攻略: 一、实现思路 在HTML中定义一个表单元素 使用CSS美化表单元素的样式 使用JavaScript控制下拉列表的显示与隐藏,并将选中的值显示到表单元素中 二、具体实现步骤 1. HTML结构 在HTML中定义一个表单元素,并使用div元素模拟下拉列表的选项: <div class=&quot…

    Java 2023年6月15日
    00
  • Java数组的遍历与求和知识点

    下面是“Java数组的遍历与求和知识点”的完整攻略。 什么是Java数组? Java数组是一种容器,用来存储多个相同类型的数据值。数组是一个固定长度的容器,它包含的元素数量是在创建数组时确定的,而且这个长度在数组的整个生命周期中保持不变。 Java数组的遍历 遍历数组就是依次访问数组内的所有元素。在Java中,常用的遍历数组的方法有以下几种: 1. for循…

    Java 2023年5月26日
    00
  • Java8 CompletableFuture 异步执行操作

    Java8引入了CompletableFuture类,它是对之前的Future和Promise模式的完美实现。CompletableFuture不仅能同步获取异步执行结果,还能设置执行完成后的回调函数和流式调用。下面是“Java8 CompletableFuture 异步执行操作”的完整攻略。 创建CompletableFuture对象 要创建Complet…

    Java 2023年5月18日
    00
  • JDBC PreparedStatement Like参数报错解决方案

    JDBC PreparedStatement Like参数报错通常是因为在使用PreparedStatement对象时,传入的使用了%和_等特殊字符的参数没有被正确地转义,导致SQL语句解析异常。下面是解决该问题的完整攻略: 1. 使用转义字符 为了正确地处理参数中的特殊字符,我们需要在传入参数时使用转义符,在%和_字符前添加\\,使用Java代码如下: S…

    Java 2023年5月20日
    00
  • 详解Spring Boot 项目中的 parent

    SpringBoot项目中的parent,也叫做父项目,是SpringBoot提供的一种依赖管理的方式,目的是方便项目的版本管理和依赖升级。在Maven或Gradle中,通过在我们的项目中声明一个父项目,再由父项目来管理依赖和版本号,从而简化我们的构建配置和管理流程。 Maven中的parent 在Maven中,我们可以将SpringBoot的parent设…

    Java 2023年5月15日
    00
  • java之使用stream对日期排序方式

    下面是对Java中使用Stream对日期排序的攻略。 1. 准备数据 在讲解如何使用Stream对日期排序之前,我们需要准备一些数据。假设我们有一个List集合,其中包含多个日期对象。如下所示: List<LocalDate> dates = Arrays.asList( LocalDate.of(2021, 8, 1), LocalDate.o…

    Java 2023年5月20日
    00
  • Java Class.forName()用法和newInstance()方法原理解析

    Java中的Class对象提供了一些强大的机制来处理编译时期未知的类,比如在运行时动态加载并实例化一个类。其中Class.forName()和newInstance()方法是两个非常重要的方法,本文将详细讲解它们的用法和原理。 Java Class.forName()方法 Class.forName()是Java反射机制中的核心方法之一,它可以根据类名动态加…

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