springmvc 分页查询的简单实现示例代码

下面是完整的“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}&amp;pageNo=${i}">${i}</a></li>
            </c:forEach>
        </c:if>
    </body>
</html>

3. 总结

至此,本文介绍了如何在 Spring MVC 中实现简单的分页查询功能。在代码实现的过程中,我们需要用到 JPA、Controller、Service、Model 等相关的技术。具体实现步骤比较简单,但需要注意细节。如果您有需要,可以将本实现示例代码修改为适合自己的应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springmvc 分页查询的简单实现示例代码 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • SpringBoot实现多个子域共享cookie的示例

    下面将详细讲解SpringBoot实现多个子域共享cookie的完整攻略。首先我们需要了解什么是cookie和域名。 什么是cookie和域名? HTTP Cookie,一般简称 Cookie,指某些网站为了辨别用户身份、进行 session 跟踪而存储在用户本地终端上的数据(通常经过加密)。 而域名,是互联网上用于区分不同网站的名称。例如在www.exam…

    Java 2023年5月19日
    00
  • 详解SpringBoot的Run方法

    详解Spring Boot的Run方法 Spring Boot的Run方法是启动Spring Boot应用程序的核心方法。在本文中,我们将深入探讨Spring Boot的Run方法,包括其工作原理、参数和示例。 Spring Boot的Run方法工作原理 Spring Boot的Run方法是通过SpringApplication类的静态run()方法来启动S…

    Java 2023年5月15日
    00
  • Struts 2中的constant配置详解

    这里是关于“Struts 2中的constant配置详解”的完整攻略。 什么是constant配置 在Struts 2中,constant指的是可以用来定义一些全局静态变量的配置参数。这些参数可以应用到整个Struts 2应用程序中,并可以通过调用常量值从配置文件中获取。 常见的constant配置 1. struts.enable.DynamicMetho…

    Java 2023年5月20日
    00
  • Android实现上传文件功能的方法

    Android实现上传文件功能的方法主要有两种:使用HttpURLConnection或使用OkHttp库。 使用HttpURLConnection上传文件 步骤一:添加网络权限 在AndroidManifest.xml文件中添加以下权限: <uses-permission android:name="android.permission.I…

    Java 2023年6月15日
    00
  • 微信公众平台 发送模板消息(Java接口开发)

    下面是关于微信公众平台发送模板消息的完整攻略: 一、准备工作 首先需要在微信公众号官方平台注册并开通微信公众号,获取AppID和AppSecret等信息,并配置好开发者模式下的服务器URL以及消息加解密设置。 在微信公众平台后台找到“模板消息”功能,创建需要的模板并获取模板ID和关键词ID。 使用Java语言编写代码,引入相关依赖包,如weixin-java…

    Java 2023年5月23日
    00
  • 完美实现CSS垂直居中的11种方法

    当我们在做网页布局时,由于不同元素的高度不同,垂直居中一直是比较困难的问题。下面我将详细讲解“完美实现CSS垂直居中的11种方法”的完整攻略: 方法一:line-height 在父元素中使用line-height属性设置跟父元素高度相等的行高,然后在子元素中使用vertical-align:middle将子元素垂直居中。 示例: <div class=…

    Java 2023年5月30日
    00
  • 使用SpringBoot配置https(SSL证书)

    使用 Spring Boot 配置 HTTPS (SSL 证书) 的完整攻略 在本文中,我们将详细介绍如何使用 Spring Boot 配置 HTTPS (SSL 证书)。我们将介绍 HTTPS 的概念、配置方式和提供两个示例。 HTTPS 概念 HTTPS (Hyper Text Transfer Protocol Secure) 是一种通过 SSL/TL…

    Java 2023年5月15日
    00
  • 【深入浅出Spring原理及实战】「源码调试分析」深入源码探索Spring底层框架的的refresh方法所出现的问题和异常

    学习Spring源码的建议 阅读Spring官方文档,了解Spring框架的基本概念和使用方法。 下载Spring源码,可以从官网或者GitHub上获取。 阅读Spring源码的入口类,了解Spring框架的启动过程和核心组件的加载顺序。 阅读Spring源码中的注释和文档,了解每个类和方法的作用和用法。 调试Spring源码,可以通过IDEA等工具进行调试…

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