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日

相关文章

  • 详解Spring Boot实战之Rest接口开发及数据库基本操作

    下面为您详细讲解“详解Spring Boot实战之Rest接口开发及数据库基本操作”的完整攻略。 1. 背景介绍 在Web开发中,RESTful API是一种非常流行的架构风格,它能够提供简单、易用、灵活的接口服务。而Spring Boot作为一个现代化的Java Web框架,则能够非常好地实现RESTful API的开发。 本攻略将为您介绍如何使用Spri…

    Java 2023年5月19日
    00
  • JSP 中文字符处理代码

    JSP 中文字符处理是Web开发中一个常见问题,本文针对JSP中文字符处理提供一些攻略。 一、确保JSP页面编码和文件编码一致 JSP页面的编码格式需要和文件编码格式一致,包括jsp文件本身的编码、jsp引用的外部文件(如CSS、JS等)和JSP应用程序中的所有文件。可以使用以下代码在JSP页面中指定编码格式: <%@ page contentType…

    Java 2023年6月15日
    00
  • java实现日历功能

    下面是“Java实现日历功能”的完整攻略。 1. 需求分析 我们需要实现一个日历功能,具体需求如下: 能够显示指定年份和月份的日历; 显示的日历中包括节假日等特殊日期; 支持用户通过命令行参数指定需要显示的年份和月份。 2. 技术选型 为了实现这个需求,我们可以使用Java语言结合标准库中的java.util.Calendar和java.time.YearM…

    Java 2023年5月19日
    00
  • 详解Java中的时区类TimeZone的用法

    下面是详解Java中的时区类TimeZone的用法的完整攻略。 时间和时区 在计算机程序中,时间很重要。时间的概念最初来源于物理学,指的是我们日常生活中我们感知到的一种连续不断的流逝。在计算机中,时间就是一系列数字,用于表示一个时间点的位置。由于全球各地的人们都有不同的习惯和语言,所以计算机中的时间也必须考虑时区的影响。Java提供了TimeZone类,它可…

    Java 2023年5月20日
    00
  • java线程之使用Runnable接口创建线程的方法

    使用Runnable接口创建线程的方法是Java中最基本、最常见的线程创建方式。下面我将为大家详细介绍如何使用该方法创建线程。 步骤一:创建一个实现Runnable接口的类 要使用Runnable接口创建线程,首先需要创建一个实现了该接口的类。这个类要重写run()方法,并实现线程的具体逻辑。例如: public class MyRunnable imple…

    Java 2023年5月19日
    00
  • 在Intellij Idea中使用jstl标签库的方法

    使用JSTL(JSP标准标签库)可以在JSP页面中更轻松地实现一些复杂的逻辑操作,例如循环、条件判断等操作。下面是在IntelliJ IDEA中使用JSTL的方法。 步骤一:导入JSTL Jar包 在项目中引入JSTL的Jar包。可以在Maven或Gradle中配置依赖项,或者手动下载Jar包并将其添加到项目的类路径中。 以下是Maven依赖项的示例: &l…

    Java 2023年6月15日
    00
  • 深入浅析Jsonp解决ajax跨域问题

    深入浅析Jsonp解决ajax跨域问题 什么是Jsonp Jsonp(JSON with Padding)是一种跨域数据交互的技术,它的原理是利用 script 标签的跨域特性。Jsonp的工作流程大致如下: 前端页面创建一个 script 标签,其中 src 属性值为要访问的跨域地址url,并在url中传递一个回调函数的参数; 后端服务器解析请求,并在返回…

    Java 2023年6月15日
    00
  • Spring Boot 快速集成 Redis的方法

    下面是详细讲解“Spring Boot 快速集成 Redis的方法”的完整攻略。 简介 Redis是目前比较流行的高性能缓存和NoSQL数据库,通过使用它可以提高项目的性能和并发能力。而Spring Boot是目前比较流行的Web框架之一,提供了快速开发、易扩展、自动化配置等特性。下面我们将使用Spring Boot来快速集成Redis。 步骤 第一步:添加…

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