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中SSM+Shiro系统登录验证码的实现方法

    下面我会详细讲解Java中SSM+Shiro系统登录验证码的实现方法。 一、什么是验证码 验证码是一种人机识别技术,通常是在表单提交时对用户输入的内容进行验证。而验证码的实现方式有很多,比较常见的有“图片验证码”和“短信验证码”。 二、验证码的实现 1. 图片验证码 图片验证码是最常用的一种验证码,它是通过随机生成一张图片,使得用户必须输入正确的验证码才能提…

    Java 2023年5月23日
    00
  • Java ConcurrentModificationException异常解决案例详解

    为了解决“Java ConcurrentModificationException异常”,我们需要从以下几个方面入手:原因分析、解决方法和代码示例。 原因分析 Java ConcurrentModificationException 异常通常发生在多个线程操作同一集合对象的时候。在一个线程正在读取该集合的同时,另一个线程修改了该集合,导致第一个线程遍历时出现…

    Java 2023年5月27日
    00
  • 01-三层架构之查询数据库数据

    一、后台操作流程 1.创建数据库 CREATE DATABASE wyy_music; USE wyy_music; DROP TABLE IF EXISTS `tb_music`; CREATE TABLE `tb_music` ( `music_id` INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, — 歌曲I…

    Java 2023年5月8日
    00
  • 利用Spring AOP记录方法的执行时间

    利用Spring AOP记录方法的执行时间可以通过以下步骤实现: 1. 添加依赖 在pom.xml文件中添加Spring AOP的依赖: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</arti…

    Java 2023年5月20日
    00
  • Spring MVC实现mysql数据库增删改查完整实例

    以下是关于“Spring MVC实现MySQL数据库增删改查完整实例”的完整攻略,其中包含两个示例。 Spring MVC实现MySQL数据库增删改查完整实例 在Spring MVC中,我们可以使用JdbcTemplate类来实现MySQL数据库的增删改查操作。在本文中,我们将讲解如何使用JdbcTemplate类来实现MySQL数据库的增删改查操作。 My…

    Java 2023年5月17日
    00
  • JdbcTemplate操作数据库的具体方法

    JdbcTemplate 是 Spring 框架中提供的一种轻量级 JDBC 抽象框架,为了能够更方便快速地使用 JdbcTemplate 操作数据库,下面详细介绍 JdbcTemplate 操作数据库的具体方法。 1. 创建 JdbcTemplate 对象 我们可以在 Spring 的 XML 配置文件中声明 JdbcTemplate 对象并注入数据源,例…

    Java 2023年5月20日
    00
  • Angularjs实现多图片上传预览功能

    下面是关于AngularJS实现多图片上传预览功能的详细攻略: 1. 环境准备 在开始实现多图片上传预览功能前,需要确保以下环境已准备好: AngularJS框架; HTML和CSS基本知识; 文件上传插件jQuery File Upload; 一些基本的javascript和jQuery知识。 2. 实现步骤 第1步:引入jQuery和AngularJS框…

    Java 2023年6月15日
    00
  • java Timer 定时每天凌晨1点执行任务

    Java Timer是Java中的一个计时器工具,可以用来在特定时间间隔内执行指定任务。下面是Java Timer实现每天凌晨1点执行任务的攻略: 步骤一:创建Timer对象 在Java中,我们需要使用java.util.Timer类来创建一个计时器对象。首先,需要导入java.util.Timer和java.util.TimerTask这两个包。 impo…

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