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

下面我将为您详细讲解如何使用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日

相关文章

  • Linux下mysql 8.0.15 安装配置图文教程以及修改密码

    下面是“Linux下mysql 8.0.15 安装配置图文教程以及修改密码”的完整攻略。 安装mysql 8.0.15 1. 下载安装包 首先打开mysql官网,找到对应的版本,下载对应的安装包。 示例:下载MySQL 8.0.15版本 wget https://dev.mysql.com/get/mysql80-community-release-el7-…

    database 2023年5月22日
    00
  • Linux中允许远程用户登录访问mysql的方法

    需要手动增加可以远程访问数据库的用户。 方法一、本地登入mysql,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,将”localhost”改为”%” #mysql -u root -prootmysql>use mysql;mysql>update user set host = ‘%’ where user = ‘r…

    MySQL 2023年4月13日
    00
  • Linux使用MySQL忘记root密码及修改MySQL默认编码

    下面是详细讲解“Linux使用MySQL忘记root密码及修改MySQL默认编码”的完整攻略。 忘记root密码 当你忘记在Linux系统上使用MySQL的root密码时,可以通过以下步骤重置它。 步骤一:停止MySQL服务 在终端运行以下命令停止MySQL服务。 sudo systemctl stop mysql 步骤二:启动MySQL服务器跳过认证 使用…

    database 2023年5月22日
    00
  • 运行程序提示access violation at address的解决方法

    关于“运行程序提示access violation at address”的问题可以分为以下步骤进行解决: 1. 确认错误提示 当出现“运行程序提示access violation at address”的错误提示时,我们需要先确认错误提示中给出的具体地址信息,这个地址告诉了我们程序在哪个内存地址出现了访问问题,例如: Access violation at…

    database 2023年5月21日
    00
  • 如何在Python中使用peewee ORM操作数据库?

    如何在Python中使用peewee ORM操作数据库? Peewee是一个轻量级的Python ORM(对象关系映射)库,它提供了一种简单的方式来操作关系型数据库。使用Peewee,我们可以使用Python代码来创建、读取、更新删除关系型数据库中的数据。以下是如何在Python中使用Peewee ORM操作数据库的完整使用攻略,包括连接数据库、创建表、插入…

    python 2023年5月12日
    00
  • springmvc+mybatis+spring+redis

    只作参考,以防忘记使用!   mybatis的配置文件:   <?xml version=”1.0″ encoding=”UTF-8″ ?> <!DOCTYPE configuration PUBLIC “-//mybatis.org//DTD Config 3.0//EN” “http://mybatis.org/dtd/mybatis-…

    Redis 2023年4月11日
    00
  • MySQL配置参数优化

    mysql服务性能优化之my.cnf配置说明详解 硬件:内存16G   #在MYSQL暂时停止响应新请求之前,短时间内的多少个请求可以被存在堆栈中。如果系统在短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的监听队列的大小。默认值50。   max_connections = 2000    #MySQL允许最大的进程连接数,如果…

    MySQL 2023年4月13日
    00
  • php安装dblib扩展,连接mssql的具体步骤

    要安装dlib扩展和连接mssql,您可以按照以下步骤进行操作: 准备工作 首先,您需要确保已经安装并配置好了PHP和MSSQL Server。安装过程可以参考相关的教程和文档。 下载并安装FreeTDS FreeTDS是一个用于访问MSSQL、Sybase等数据库服务器的开源库。您可以从官网上下载最新版本的FreeTDS。安装过程可能会因系统环境的不同而有…

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