下面我来详细讲解一下“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技术站