mybatis RowBounds 分页

article/2025/10/4 0:09:30

在 mybatis 中,使用 RowBounds 进行分页,非常方便,不需要在 sql 语句中写 limit,即可完成分页功能。但是由于它是在 sql 查询出所有结果的基础上截取数据的,所以在数据量大的sql中并不适用,它更适合在返回数据结果较少的查询中使用

最核心的是在 mapper 接口层,传参时传入 RowBounds(int offset, int limit) 对象,即可完成分页

注意:由于 java 允许的最大整数为 2147483647,所以 limit 能使用的最大整数也是 2147483647,一次性取出大量数据可能引起内存溢出,所以在大数据查询场合慎重使用
 

mapper 接口层代码如下

List<Book> selectBookByName(Map<String, Object> map, RowBounds rowBounds);

调用如下

List<Book> list = bookMapper.selectBookByName(map, new RowBounds(0, 5));

说明: new RowBounds(0, 5),即第一页,每页取5条数据

 

测试示例

数据库数据

mapper 接口层

package com.demo.mapper;import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.session.RowBounds;
import com.demo.bean.Book;@Mapper
public interface BookMapper {//添加数据int insert(Book book); //模糊查询List<Book> selectBookByName(Map<String, Object> map, RowBounds rowBounds);}

mapper.xml 文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.demo.mapper.BookMapper"><resultMap id="BaseResultMap" type="com.demo.bean.Book"><id column="id" property="id" jdbcType="VARCHAR" /><result column="book_name" property="bookName" jdbcType="VARCHAR" /><result column="book_author" property="bookAuthor" jdbcType="VARCHAR" /><result column="create_date" property="createDate" jdbcType="VARCHAR" /><result column="update_date" property="updateDate" jdbcType="VARCHAR" /></resultMap><sql id="Base_Column_List">book_name as bookName, book_author as bookAuthor,create_date as createDate, update_date as updateDate</sql><insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.demo.bean.Book">insert into book(book_name, book_author, create_date, update_date)  values(#{bookName}, #{bookAuthor}, #{createDate}, #{updateDate}) </insert><select id="selectBookByName" resultMap="BaseResultMap"><bind name="pattern_bookName" value="'%' + bookName + '%'" /><bind name="pattern_bookAuthor" value="'%' + bookAuthor + '%'" />select * from book where 1 = 1<if test="bookName != null and bookName !=''">and book_name LIKE #{pattern_bookName}</if><if test="bookAuthor != null and bookAuthor !=''">and book_author LIKE #{pattern_bookAuthor}</if></select></mapper>

测试代码

package com.demo;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.RowBounds;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.demo.bean.Book;
import com.demo.mapper.BookMapper;@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootJspApplicationTests {@Autowiredprivate BookMapper bookMapper; @Testpublic void contextLoads() {Book book = new Book();book.setBookName("隋唐演义");book.setBookAuthor("褚人获");SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");book.setCreateDate(sdf.format(new Date()));book.setUpdateDate(sdf.format(new Date()));bookMapper.insert(book);System.out.println("返回的主键:   "+book.getId());}@Testpublic void query() {Map<String, Object> map = new HashMap<String, Object>();map.put("bookName", "");map.put("bookAuthor", "");List<Book> list = bookMapper.selectBookByName(map, new RowBounds(0, 5));for(Book b : list) {System.out.println(b.getBookName());}}}

运行 query 查询第一页,5 条数据,效果如下

 


http://chatgpt.dhexx.cn/article/3GKiLyA7.shtml

相关文章

RowBounds分页

不再使用SQL实现分页 1.接口 //分页List<User> getUserByRowBounds(); 2.mapper.xml <!-- 分页--><select id"getUserByRowBounds" resultType"UserMap">select * from mybatis.user</select> 3.测试 Testpublic void getUserByRo…

row_number() OVER(PARTITION BY)

日萌社 人工智能AI&#xff1a;Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战&#xff08;不定时更新&#xff09; row_number()排序函数 统计每个部门薪资最高的员工信息&#xff08;同一个部门的员工按照薪资进行降序排序&#xff09;第一种写法&#xff1a;ro…

在VS中安装nuget离线包nupkg文件

1、打开或者新建任意一个项目 2、项目-管理NuGet程序包 3、设置 4、设置好以后如下图&#xff0c;点击确定 5、安装

Uipath打包流程为.nupkg文件

先断开oc 在publish流程&#xff0c;其中main是入口 点击publish 然后打开Uipath robot&#xff0c;可以看到流程已经同步上去了

如何将nupkg离线安装包安装到VS2017、9

不知道为什么&#xff0c;用vs自带的nuget程序管理器安装nuget包非常慢&#xff0c;而且很容易出错&#xff0c;最重要的是编译的时候能急死人&#xff0c;于是换网、自己架nuget服务器...一顿折腾。 不再废话&#xff0c;直接上干货&#xff1a; 1、在官网https://www.nuget…

VS如何安装.nupkg文件

nupkg是visual studio 的NuGet Package的一个包文件 安装nupkg包前&#xff0c;在visual studio的NuGet中会显示该包需要的.net framework runetime版本需要 还有版权归属等信息 具体看一下截图 大家可以去下载一个&#xff1a;Google Protocol buffers 3.5.1的nupkg来试试 下…

vs2010 添加nupkg文件

起因呢是这样的&#xff1a;以前一直用破解版的Teechartd&#xff0c;其实这个问题也不大&#xff0c;也挺好的&#xff0c;只是因为它是破解的嘛&#xff1b; 近期对知识产权这块也非常重视&#xff0c;所以在这个开发中就考虑到我们未来远大的梦想&#xff0c;我们是仪表行业…

c#使用nuget.exe CLI发布 nupkg 包

2019独角兽企业重金招聘Python工程师标准>>> 准备 工具&#xff1a;nuget.exe CLI&#xff08;本人使用版本&#xff1a; NuGet Version: 4.6.2.5055&#xff09;将下载的的nuget.exe路径添加到系统变量PATH中vs创建的类库项目 操作 让项目自动生成版本号&#xff0…

如何将nupkg文件安装到VS2017

本文为原创文章、源代码为原创代码&#xff0c;如转载/复制&#xff0c;请在网页/代码处明显位置标明原文名称、作者及网址&#xff0c;谢谢&#xff01; 开发工具&#xff1a;VS2017 系统&#xff1a;Win10 X64 一、首先在https://www.nuget.org/下载离线nupkg文件&#xff0c…

制作NUGET包制作nupkg包

下载制作NUGET包工具 NUGETPACKAGEEXPLORER 直接下载NuGet Package Explorer软件&#xff0c;网盘CSDN等上面有好多 然后运行里面的 根据你自己的lib版本选择相应的选项 选择你的lib文件 选择Edit进行基础信息编辑 填写基础信息&#xff0c;图标填写绝对磁盘地址即可&#xf…

Nuget包管理器将nupkg文件导入ASP.NET MVC5项目

备注&#xff1a;使用的是Visual Stual2013。 1、新建ASP.NET Web应用程序&#xff0c;自定义项目名、解决方案名 2、选择对应的模板&#xff0c;可以勾选添加单元测试 3、选择菜单栏&#xff1a;工具——Nuget包管理器——程序包管理器设置(N)&#xff0c; 出现界面如下&…

没有外网只有内网,nuget离线安装nupkg的方法

2018.11.24更新&#xff1a;终极解决方案&#xff0c;去内网搭一个私有库把 目录 1. 在有外网的电脑上先安装成功&#xff0c;然后拷到没有外网的电脑上。2. 创建Vue模板成功&#xff0c;但是运行dotnet restore找不到资源3. 按照指定路径找资源&#xff0c;而不是让它自动的去…

PowerShell Gallery .nupkg手动下载将.nupkg文件重命名为.zip,然后将内容提取到本地文件夹中

PowerShell Gallery支持直接从网站下载软件包&#xff0c;而无需使用PowerShellGet cmdlet。您可以将任何软件包下载为NuGet软件包&#xff08;.nupkg&#xff09;文件&#xff0c;然后将其复制到内部存储库中。 注意 手册包下载是不打算作为一个替代Install-Module小命令。下载…

C#安装本地nupkg包

联机库 搜索nuGet 下载安装 工具菜单中多了一个nuGet选项 扩展管理器中也可以看到 打开一个项目 什么都没有 添加一个 打开“工具”——“选项” 点击绿色的加号&#xff0c;源为自己下载的包所在的文件夹路径&#xff0c;名称自己起 点击确定 可以安装 很快就安装好了&#x…

如何在本地安装NuGet包.nupkg文件?

本文翻译自&#xff1a;How do I install a NuGet package .nupkg file locally? I have some .nupkg files from a C# book. 我有一些来自C&#xff03;书的.nupkg文件。 How can I install them? 我该如何安装它们&#xff1f; #1楼 参考&#xff1a;https://stackoom.co…

VS2019添加自定义发布本地的Nuget(.nupkg文件)

要打包生成.nupkg文件&#xff0c;可以有如下几种方法&#xff1a; 方法一&#xff1a; 一、打开外部工具 打开VS 【工具】 - 【外部工具】&#xff0c;点击添加按钮&#xff0c;输入如下内容 如下图所示&#xff1a; 标题&#xff1a;发布本地Nuget 或者随便自定义一个名…

VS2015用nuget包管理器离线安装nupkg包

最近在用C#开发ZMQ通信相关的东西&#xff0c;NetMQ是ZMQ(ZeroMQ)在C#的移植版本。。 而我在离线导入netmq的时候出现了各种各样的问题&#xff0c;这边记录一下过程&#xff0c;方便以后参考。 NetMQ.nupkg包及其依赖的包下载 在nupkg官网搜索下载&#xff0c;官网地址 右侧…

VS中安装.nupkg文件

代码修复从get-only属性生成的记录&#xff08;不可变类/结构&#xff09;构造函数。 这包括使用.NET编译器平台&#xff08;Roslyn&#xff09;创建的分析器的VSIX和NuGet包。 VSIX&#xff1a;https&#xff1a;//visualstudiogallery.msdn.microsoft.com/941ef3c4-a523-4d…

如何安装.nupkg文件?

nupkg是visual studio 的NuGet Package的一个包文件 安装nupkg包前&#xff0c;在visual studio的NuGet中会显示该包需要的.net framework runetime版本需要 还有版权归属等信息 具体看一下截图 大家可以去下载一个&#xff1a;Google Protocol buffers 3.5.1的nupkg来试试…

如何安装.nupkg文件

nupkg是visual studio 的NuGet Package的一个包文件 安装nupkg包前&#xff0c;在visual studio的NuGet中会显示该包需要的.net framework runetime版本需要 还有版权归属等信息 具体看一下截图 大家可以去下载一个&#xff1a;Google Protocol buffers 3.5.1的nupkg来试试…