下面是完整的“springmvc 分页查询的简单实现示例代码”的攻略:
1. 简介
Spring MVC 是一个基于 Java 的 Web 应用程序框架,而分页查询则是 Web 应用程序中常用的功能之一。本文将向您展示如何在 Spring MVC 中实现简单的分页查询功能。
2. 实现步骤
2.1 添加 jar 包
在项目的 pom.xml 中添加以下依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>${spring-data-jpa.version}</version>
</dependency>
2.2 实体类
假设我们要查询的实体是 User,我们需要写一个 User 实体类。
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column
private String username;
@Column
private String password;
@Column
private String email;
//省略 getter 和 setter 方法
}
2.3 DAO 层
写一个 UserDao 接口和一个 UserDaoImpl 类,用于查询 User 实体类。
public interface UserDao extends JpaRepository<User, Long> {
}
@Repository
public class UserDaoImpl {
@PersistenceContext
private EntityManager entityManager;
public List<User> findUsersByPage(int pageNo, int pageSize) {
String jpql = "select u from User u";
TypedQuery<User> query = entityManager.createQuery(jpql, User.class);
query.setFirstResult((pageNo - 1) * pageSize);
query.setMaxResults(pageSize);
return query.getResultList();
}
public Long getUserCount() {
String jpql = "select count(u) from User u";
Query query = entityManager.createQuery(jpql);
return (Long) query.getSingleResult();
}
}
2.4 服务层
由于我们查询的是 User 实体类,所以需要写一个 UserService 以及一个 UserServiceImpl 类。
public interface UserService {
List<User> findUsersByPage(int pageNo, int pageSize);
Long getUserCount();
}
@Service
@Transactional
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public List<User> findUsersByPage(int pageNo, int pageSize) {
return userDao.findUsersByPage(pageNo, pageSize);
}
@Override
public Long getUserCount() {
return userDao.getUserCount();
}
}
2.5 控制器层
最后,我们需要在控制器层添加一个方法,用于获取分页数据。
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(@RequestParam(value = "pageNo", defaultValue = "1") int pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") int pageSize,
ModelMap model) {
List<User> users = userService.findUsersByPage(pageNo, pageSize);
Long count = userService.getUserCount();
model.addAttribute("users", users);
model.addAttribute("pageSize", pageSize);
model.addAttribute("currentPage", pageNo);
model.addAttribute("totalPage", (count + pageSize - 1) / pageSize);
return "user/list";
}
}
2.6 页面
在 /WEB-INF/views/user/list.jsp 中添加以下代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>User List</title>
</head>
<body>
<table border="1">
<tr>
<td>ID</td>
<td>Username</td>
<td>Password</td>
<td>Email</td>
</tr>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.username}</td>
<td>${user.password}</td>
<td>${user.email}</td>
</tr>
</c:forEach>
</table>
<br>
<c:if test="${totalPage > 1}">
<c:url value="/user/list" var="url">
<c:param name="pageSize" value="${pageSize}"/>
</c:url>
<c:forEach var="i" begin="1" end="${totalPage}">
<li><a href="${url}&pageNo=${i}">${i}</a></li>
</c:forEach>
</c:if>
</body>
</html>
3. 总结
至此,本文介绍了如何在 Spring MVC 中实现简单的分页查询功能。在代码实现的过程中,我们需要用到 JPA、Controller、Service、Model 等相关的技术。具体实现步骤比较简单,但需要注意细节。如果您有需要,可以将本实现示例代码修改为适合自己的应用程序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springmvc 分页查询的简单实现示例代码 - Python技术站