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日

相关文章

  • 详细讲解安全升级MySQL的方法

    详细讲解安全升级MySQL的方法 在对MySQL进行安全升级时,应该按照以下步骤进行: 1.备份 在进行任何操作之前,一定要进行数据库备份,以确保在升级过程中出现问题时可以恢复数据。可使用以下命令进行备份: $ mysqldump -u root -p –all-databases > all_databases.sql 2.检查当前MySQL版本 …

    database 2023年5月19日
    00
  • Linux oracle 9i图文安装教程六 完结篇

    Linux Oracle 9i图文安装教程六 完结篇 本篇为Linux Oracle 9i图文安装教程系列的最后一篇,主要讲解安装完成后的一些后续操作。 数据库服务启动 使用以下命令启动Oracle 9i数据库服务: # su oracle $ sqlplus /nolog SQL> connect / as sysdba SQL> startu…

    database 2023年5月22日
    00
  • sql cast,convert,QUOTENAME,exec 函数学习记录

    让我来为您详细讲解一下“SQL CAST、CONVERT、QUOTENAME、EXEC 函数学习记录”的完整攻略。 CAST 和 CONVERT 函数 在 SQL 中,我们经常需要将一种数据类型转换为另一个数据类型,这时候我们可以使用 CAST 或 CONVERT 函数。 CAST 函数用于将一个数据类型转换为另一个数据类型,语法如下: CAST(expre…

    database 2023年5月21日
    00
  • MySQ登录提示ERROR 1045 (28000)错误的解决方法

    当使用MySQL登录时,可能会遇到错误提示ERROR 1045 (28000),这通常是因为用户名或密码不正确而导致的,也有可能是权限问题所致。下面是解决方法的完整攻略。 1. 确认用户名和密码 首先,请确认你输入的用户名和密码是否正确。如果你不确定自己的用户名和密码是否正确,可以尝试使用以下命令测试登录: mysql -u username -p 其中,-…

    database 2023年5月18日
    00
  • Spring数据库连接池url参数踩坑及解决

    Spring数据库连接池url参数踩坑及解决 在使用Spring数据库连接池时,很多开发者可能会遇到一些莫名其妙的问题,比如连接不上、连接超时、连接池达到最大连接数等等,这些问题可能很难排查。其中一个容易被忽视的问题是url参数配置不当,这会导致数据库连接池的异常。 1. url参数 首先,我们来了解一下url参数有哪些,以及它们分别代表什么含义。下面是比较…

    database 2023年5月18日
    00
  • Windows或Linux系统中备份和恢复MongoDB数据的教程

    下面是Windows或Linux系统中备份和恢复MongoDB数据的教程。 备份MongoDB数据 使用mongodump命令进行备份 打开命令行窗口,进入MongoDB的安装目录下的bin文件夹中。 输入以下命令,备份指定的数据库,例如备份名为test的数据库: bash mongodump -d test 备份的数据默认会保存在当前命令行所在的目录下的d…

    database 2023年5月22日
    00
  • 百度Java面试题 前200页精选(下)

    百度Java面试题 前200页精选(下)攻略 了解面试题来源 该面试题来源于百度Java面试题前200页的精选。这200页的内容是由业内技术大佬们由自己的面试经验和积累整理而成。其中包含了面试官经常问到的知识点、考察面试者的思考能力、综合能力以及细节处理能力等等。所以使用这些面试题进行练习可以帮助我们更好地了解企业面试流程、找出自己的优劣势、发现其中不足、改…

    database 2023年5月21日
    00
  • centos7安装mysql5.6的方法

    下面是针对centos7安装mysql5.6的完整攻略。 步骤1:安装mysql yum源 首先需要安装mysql yum源,使得系统能够通过yum命令安装mysql5.6。具体操作步骤如下: 下载mysql yum源的rpm包 wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noa…

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