springmvc+mybatis 做分页sql 语句实例代码

yizhihongxing

下面我将为您详细讲解如何使用SpringMVC和MyBatis实现分页查询。

1. 创建分页类

在开始之前需要先创建一个分页类,用来存放分页查询所需的参数,如下:

public class PageInfo {

    // 当前页码,默认为第一页
    private int pageNum = 1;
    // 每页显示的记录数,默认为10
    private int pageSize = 10;

    // 省略了get/set方法
}

2. 编写Mapper.xml

在Mapper.xml中,我们需要使用limit关键字来实现分页查询,同时需要使用MyBatis提供的#{}方式来获取查询的参数,具体如下:

<select id="queryUsers" parameterType="map" resultMap="userMap">
    select * from user
    <where>
        <if test="name != null and name != ''">
            and name = #{name}
        </if>
    </where>
    order by id desc
    limit #{start}, #{pageSize}
</select>

在上述代码中,startpageSize为分页查询所需的参数,分别表示查询的起始位置和每页显示的记录数。其中,start的计算公式为(pageNum-1)*pageSize,代表从第几条记录开始查询。

3. 编写Mapper接口

接下来,在我们的Mapper接口中,定义如下方法:

public interface UserDao {

    List<User> queryUsers(@Param("name") String name, @Param("start") int start, @Param("pageSize") int pageSize);

}

这个方法接受name(用户姓名)、startpageSize三个参数,其中前两个参数的类型分别为Stringint类型。

4. 编写Service方法

在Service层中,我们需要调用Mapper接口中定义的方法来进行分页查询。我们可以将分页查询所需的参数封装到PageInfo对象中,并将其作为方法的参数进行传递。例如:

@Service
public class UserService {

    @Autowired
    private UserDao userDao;

    public List<User> queryUsers(String name, PageInfo pageInfo) {
        int start = (pageInfo.getPageNum() - 1) * pageInfo.getPageSize();
        return userDao.queryUsers(name, start, pageInfo.getPageSize());
    }

}

5. 编写Controller方法

最后,在Controller中,我们将通过一个HTTP请求来触发分页查询。例如:

@RequestMapping("/users")
public String queryUsers(@RequestParam(required=false) String name, @RequestParam(required=false) Integer pageNum, Model model) {
    if (pageNum == null) {
        pageNum = 1;
    }
    PageInfo pageInfo = new PageInfo();
    pageInfo.setPageNum(pageNum);
    List<User> userList = userService.queryUsers(name, pageInfo);
    model.addAttribute("userList", userList);
    model.addAttribute("page", pageInfo);
    return "userList";
}

在上述代码中,我们从HTTP请求中获取用户姓名和当前页码,在使用PageInfo对象封装查询参数之后,调用UserServicequeryUsers方法来进行分页查询,并将查询结果和分页信息设置到Model中,再通过View返回给用户。

示例说明

接下来,我们使用一个例子来说明如何在SpringMVC和MyBatis中实现分页查询。

例如,我们需要实现一个用户管理功能,在进行用户查询时支持分页查询。我们需要在查询页面中显示用户列表和分页信息,并提供用户姓名和当前页码两个查询参数。

1. 创建分页类

首先,在Commons模块中,我们定义了一个名为PageInfo的分页类,如下:

public class PageInfo {

    // 当前页码,默认为第一页
    private int pageNum = 1;
    // 每页显示的记录数,默认为10
    private int pageSize = 10;

    // 省略了get/set方法
}

2. 编写Mapper.xml

接下来,在User模块中,我们编写Mapper.xml文件来实现指定条件的分页查询,如下:

<select id="queryUsers" parameterType="map" resultMap="userMap">
    select * from user
    <where>
        <if test="name != null and name != ''">
            and name = #{name}
        </if>
    </where>
    order by id desc
    limit #{start}, #{pageSize}
</select>

在上述代码中,我们使用#{start}#{pageSize}来获取计算后的查询参数,用于实现分页查询。

3. 编写Mapper接口

在User模块中,我们编写了一个名为UserDao的查询接口,其中定义了分页查询的方法,如下:

public interface UserDao {

    List<User> queryUsers(@Param("name") String name, @Param("start") int start, @Param("pageSize") int pageSize);

}

4. 编写Service方法

在User模块中,我们编写了一个名为UserService的Service层类,在这个类中,我们调用了UserDao中定义的方法来实现分页查询,如下:

@Service
public class UserService {

    @Autowired
    private UserDao userDao;

    public List<User> queryUsers(String name, PageInfo pageInfo) {
        int start = (pageInfo.getPageNum() - 1) * pageInfo.getPageSize();
        return userDao.queryUsers(name, start, pageInfo.getPageSize());
    }

}

5. 编写Controller方法

在UserController中,我们编写了一个名为queryUsers的方法,这个方法接受了用户姓名和当前页码两个参数,用于调用Service层的方法来实现分页查询,如下:

@RequestMapping("/users")
public String queryUsers(@RequestParam(required=false) String name, @RequestParam(required=false) Integer pageNum, Model model) {
    if (pageNum == null) {
        pageNum = 1;
    }
    PageInfo pageInfo = new PageInfo();
    pageInfo.setPageNum(pageNum);
    List<User> userList = userService.queryUsers(name, pageInfo);
    model.addAttribute("userList", userList);
    model.addAttribute("page", pageInfo);
    return "userList";
}

在上述代码中,我们设置了默认的当前页码为1(当页面第一次加载时,没有传入当前页码参数pageNum),然后使用PageInfo对象封装查询参数,调用UserServicequeryUsers方法进行分页查询,最后将分页结果设置到Model中,返回给用户。

综上所述,通过以上步骤,我们可以在SpringMVC和MyBatis中实现分页查询。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springmvc+mybatis 做分页sql 语句实例代码 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • SQL Server 2005 Management Studio Express企业管理器将英文变成简体中文版的实现方法

    下面是实现SQL Server 2005 Management Studio Express企业管理器变成简体中文版的攻略。 步骤一:下载语言包 首先,需要下载适用于SQL Server Management Studio Express 2005的简体中文语言包。可以从微软官网下载或者从其他可靠的下载站点下载。 步骤二:安装语言包 将语言包下载到本地后,双…

    database 2023年5月21日
    00
  • 浅谈运维工程师的前景和职业发展

    浅谈运维工程师的前景和职业发展 什么是运维工程师 运维工程师是指负责公司的系统、网络、数据库等基础设施的运行和维护的工程师。其主要工作包括:系统运维、网络运维、数据库运维、安全运维等方面。 运维工程师的前景 随着互联网的快速发展,云计算、大数据等技术的迅猛发展,各行各业对于运维工程师的需求日益增加。特别的,在数字化时代背景下,互联网行业的企业对运维人员的需求…

    database 2023年5月19日
    00
  • 三表左连接查询的sql语句写法

    三表左连接查询是SQL语句中常见的一种查询方式。它可以在多张表中查找符合条件的结果,并将多张表的数据以特定的关联方式进行合并,以得到更为完整的信息。 下面介绍三表左连接查询的SQL语句写法和实例: SQL语句写法: SELECT A.*, B.*, C.* FROM table_A A LEFT JOIN table_B B ON A.id = B.a_id…

    database 2023年5月21日
    00
  • DB2优化(简易版)

    DB2优化(简易版)攻略 DB2是一个常用的数据库管理系统,为了提高其性能,我们可以进行一些优化。以下是一些简易版DB2优化攻略: 1. 数据库设计 数据库设计是DB2优化的第一步。在设计数据库时,应该尽可能地去规划表的结构,避免不必要的表关系,以提高查询效率。此外,对于需要快速查询的字段可以在表中创建索引,以提高查询速度。但是索引也会占用空间并影响插入、更…

    database 2023年5月19日
    00
  • mysql 数据库中索引原理分析说明

    下面是关于“mysql数据库中索引原理分析说明”的完整攻略。 索引基本概念 在数据库中,索引是一种数据结构,它能够加快数据的查询速度。它类似于书中的目录,使得查询操作不需要扫描整个数据库,而是直接从索引中找到所需数据的位置。 在 MySQL 中,可以使用 B 树索引和哈希索引。其中 B 树索引一般被广泛使用,它能够满足大部分场景的需求。 索引的优点和缺点 索…

    database 2023年5月22日
    00
  • mysql查询慢的原因和解决方案

    关于Mysql查询慢的原因和解决方案,下面我为大家准备了一份完整攻略。 1. 原因分析 Mysql查询慢主要有以下几个方面的原因: 1.1 索引设计不合理 索引是数据库查询的核心,不合理的索引设计会导致查询速度变慢。比如说,如果没有为一个超大表的关键字段设置索引,那么查询这个表的时候就会非常慢。 1.2 SQL语句不合理 SQL语句中的某些操作可能会导致查询…

    database 2023年5月19日
    00
  • VMware给虚拟机安装linux系统

    当使用VMware来创建虚拟机时,我们可以给虚拟机安装Linux系统。以下是详细的步骤: 步骤一:下载Linux镜像 在给虚拟机安装Linux系统之前,需要下载Linux镜像文件。在这里,我们选择Ubuntu的镜像文件为例。 可以从官方网站https://ubuntu.com/download/desktop下载Ubuntu镜像文件。 步骤二:创建Linux…

    database 2023年5月22日
    00
  • Oracle 11g收集多列统计信息详解

    Oracle 11g收集多列统计信息详解 在Oracle 11g数据库中,我们经常需要使用收集统计信息的功能来优化查询性能。默认情况下,Oracle只会收集表的统计信息。如果表中有多个列,我们可能需要对每一个列都进行统计信息的收集。本文将在介绍如何收集多列统计信息的同时,提供两个示例来演示其操作过程。 第一步:查看当前统计信息 在开始收集多列统计信息之前,我…

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