SpringMVC+Mybatis实现的Mysql分页数据查询的示例

接下来我将详细讲解“SpringMVC+Mybatis实现的Mysql分页数据查询的示例”的完整攻略,过程中将给出两条示例说明。

准备工作

在开始实现分页数据查询之前,需要确保以下几点:

  • JDK版本在1.8及以上
  • Maven依赖管理工具
  • SpringMVC框架
  • Mybatis持久层框架
  • Mysql数据库

添加依赖

在Maven的pom.xml文件中添加SpringMVC和Mybatis的相关依赖,如下所示:

<!-- SpringMVC依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.5.RELEASE</version>
</dependency>

<!-- Mybatis依赖 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.4</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.22</version>
</dependency>

数据库准备

在Mysql数据库中创建一张示例表,如下所示:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT NULL,
  `password` varchar(50) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

插入示例数据,如下所示:

INSERT INTO `user` (`username`, `password`, `age`) VALUES ('Alice', '123456', 18);
INSERT INTO `user` (`username`, `password`, `age`) VALUES ('Bob', '123456', 20);
INSERT INTO `user` (`username`, `password`, `age`) VALUES ('Charlie', '123456', 22);
INSERT INTO `user` (`username`, `password`, `age`) VALUES ('David', '123456', 24);
INSERT INTO `user` (`username`, `password`, `age`) VALUES ('Ellie', '123456', 26);

配置Mybatis

在SpringMVC项目中添加Mybatis的配置文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/mapper/UserMapper.xml"/>
    </mappers>
</configuration>

配置Mybatis的Mapper接口,如下所示:

public interface UserMapper {
    List<User> findAllUsers();
    int countAllUsers();
    List<User> findUsersByPage(@Param("offset") int offset, @Param("limit") int limit);
}

编写Mapper接口的对应的SQL语句,如下所示:

<mapper namespace="com.mapper.UserMapper">
    <resultMap type="com.pojo.User" id="userResultMap">
        <id column="id" property="id"/>
        <result column="username" property="username"/>
        <result column="password" property="password"/>
        <result column="age" property="age"/>
    </resultMap>

    <select id="findAllUsers" resultMap="userResultMap">
        select * from user
    </select>

    <select id="countAllUsers" resultType="int">
        select count(*) from user
    </select>

    <select id="findUsersByPage" parameterType="map" resultMap="userResultMap">
        select * from user limit #{offset}, #{limit}
    </select>
</mapper>

实现数据分页查询

在Controller层中编写实现数据分页查询的方法,如下所示:

@RequestMapping("/findAllUsersByPage")
public String findAllUsersByPage(@RequestParam(defaultValue = "1") int currentPage, Model model) {
    int limit = 2;
    int offset = (currentPage - 1) * limit;
    List<User> users = userMapper.findUsersByPage(offset, limit);
    int totalPage = (int) Math.ceil((double) userMapper.countAllUsers() / limit);
    model.addAttribute("currentPage", currentPage);
    model.addAttribute("totalPage", totalPage);
    model.addAttribute("users", users);
    return "list";
}

在页面中添加分页的HTML代码,如下所示:

<nav>
  <ul class="pagination">
    <li class="page-item"><a class="page-link" href="?currentPage=1">首页</a></li>
    <li class="page-item"><a class="page-link" href="?currentPage=${currentPage - 1}">上一页</a></li>
    <c:forEach begin="1" end="${totalPage}" var="i">
      <li class="page-item ${currentPage == i ? 'active' : ''}"><a class="page-link" href="?currentPage=${i}">${i}</a></li>
    </c:forEach>
    <li class="page-item"><a class="page-link" href="?currentPage=${currentPage + 1}">下一页</a></li>
    <li class="page-item"><a class="page-link" href="?currentPage=${totalPage}">尾页</a></li>
  </ul>
</nav>

示例说明

以下为两条示例说明:

示例1:修改每页显示的数据数量

在Controller层的findAllUsersByPage方法中修改每页显示的数据数量,如下所示:

int limit = 5; // 修改每页显示的数据数量
int offset = (currentPage - 1) * limit;
List<User> users = userMapper.findUsersByPage(offset, limit);
int totalPage = (int) Math.ceil((double) userMapper.countAllUsers() / limit);
model.addAttribute("currentPage", currentPage);
model.addAttribute("totalPage", totalPage);
model.addAttribute("users", users);

示例2:实现高级别的查询功能

在Mapper接口中添加高级别的查询方法,如下所示:

List<User> findUsersByUsernameAndPassword(@Param("username") String username, @Param("password") String password);

在Mapper接口的对应的SQL语句中添加高级别的查询方法,如下所示:

<select id="findUsersByUsernameAndPassword" parameterType="map" resultMap="userResultMap">
    select * from user where username=#{username} and password=#{password}
</select>

在Controller层中编写高级别的查询方法,如下所示:

@RequestMapping("/findUsersByUsernameAndPassword")
public String findUsersByUsernameAndPassword(String username, String password, Model model) {
    List<User> users = userMapper.findUsersByUsernameAndPassword(username, password);
    model.addAttribute("users", users);
    return "list";
}

以上就是“SpringMVC+Mybatis实现的Mysql分页数据查询的示例”的完整攻略了,希望能对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMVC+Mybatis实现的Mysql分页数据查询的示例 - Python技术站

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

相关文章

  • 利用iText在JSP中生成PDF报表

    生成PDF报表可以利用Java中的iText库来实现,iText使用方便,具有灵活性和可定制性,支持多语言,功能强大,可以创建、读取和操作PDF文档、表单和模板,生成安全性高的PDF文档。 以下是在JSP中使用iText生成PDF报表的完整攻略: 步骤1:下载iText库 在iText官网(https://itextpdf.com/)下载最新版的iText库…

    Java 2023年6月15日
    00
  • Java Spring的refresh方法你知道吗

    当我们在Java Spring应用程序中使用对象以及bean定义时,有些情况下我们需要按需重新加载或刷新这些bean。在这种情况下,Java Spring提供了refresh方法,可以在运行时动态地重新加载或刷新bean。 什么是refresh方法 refresh方法是将ApplicationContext的状态清除并重新读取bean定义文件的方法。在调用r…

    Java 2023年5月31日
    00
  • 【redis】哨兵监控原理

    redis-主从模式弊端: 一、master节点异常shutdown后,从机原地待命,从机数据可以查询(不可以写入),等待主机重启归来 二、复制延时,信号衰减 redis-哨兵监控:     是什么?       哨兵即为吹哨人,可以巡查监控后台master主机是否故障,如果故障可以根据投票数自动将一个从库转换为新的master,继续提供写入服务。     …

    Java 2023年5月10日
    00
  • js分页工具实例

    JS分页工具实例 本文将为大家讲解如何使用JavaScript编写分页工具的实例。本文涵盖了完整的实现过程、示例说明和代码实现。通过本文的介绍,您将学会如何使用JavaScript和jQuery创建简单的分页工具。 实现原理 分页工具的实现原理很简单,即通过计算数据总量和每页数据数量,生成页码列表。当用户点击某一页时,更新数据展示区域内容,并更新页码列表的当…

    Java 2023年6月16日
    00
  • JAVA字符串格式化-String.format()的使用

    下面为您详细讲解”JAVA字符串格式化-String.format()的使用”的完整攻略。 什么是字符串格式化? 在开发过程中,有时候我们需要将不同的数据格式化为字符串,以便我们更好地输出到控制台或文件中。例如,我们需要将日期、时间、数字等各种类型的数据格式化为字符串,然后再进行输出,这时候要用到字符串格式化功能。 Java中的字符串格式化 Java中的字符…

    Java 2023年5月26日
    00
  • Spring Security实现退出登录和退出处理器

    Spring Security是Spring框架下面的一个安全框架,它提供了一种全面的安全解决方案,包括认证和授权等方面的功能。在使用Spring Security进行Web应用程序开发的过程中,退出登录需要使用Spring Security提供的退出功能,同时也可以使用Spring Security提供的退出处理器实现一些额外的操作。 在Spring Se…

    Java 2023年6月3日
    00
  • SpringMVC中请求参数的获取方式

    SpringMVC中请求参数的获取方式 在SpringMVC中,可以通过多种方式获取请求参数: 通过@RequestParam注解获取请求参数 @RequestParam注解常用于简单类型参数的绑定,例如String、int等。使用该注解时可以指定参数名称,如果请求中传递的参数名称与指定的参数名称不一致,则无法获取到参数值。 @GetMapping(&quo…

    Java 2023年6月15日
    00
  • SpringBoot配置及使用Schedule过程解析

    Spring Boot 配置及使用 Schedule 过程解析 在本文中,我们将深入了解 Spring Boot 中的配置和使用 Schedule 的过程。我们将介绍 Spring Boot 的配置文件、配置属性、配置注解以及如何使用 Schedule 定时任务。 Spring Boot 配置文件 Spring Boot 的配置文件是一个名为 applica…

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