Mybatis分页查询——四种传参方式

目录

相关导读

一、顺序传参

1. 持久层接口方法

2. UserMapper.xml映射文件新增标签

3. 新增测试方法

4. 运行结果

二、@param传参

1. 持久层接口方法

2. UserMapper.xml映射文件新增标签

3. 新增测试方法

4. 运行结果

三、自定义POJO类传参

1. 自定义POJO类

2. 持久层接口方法

3. UserMapper.xml映射文件新增标签

4. 新增测试方法

5. 运行结果

四、Map传参

1. 持久层接口方法

2. UserMapper.xml映射文件新增标签

3. 新增测试方法

4. 运行结果


相关导读

Mybatis专栏:

Mybatis系列专栏MyBatis入门配置
Mybatis入门案例【超详细】
MyBatis配置文件 —— 相关标签详解
Mybatis模糊查询——三种定义参数方法和聚合查询、主键回填
Mybatis动态SQL查询 --(附实战案例--8888个字--88质量分)
Mybatis分页查询——四种传参方式
Mybatis一级缓存和二级缓存(带测试方法)
Mybatis分解式查询
Mybatis关联查询【附实战案例】
MyBatis注解开发---实现增删查改和动态SQL
MyBatis注解开发---实现自定义映射关系和关联查询

        如果我们也想要像下图那种分页查询的方式,那么我们应该怎么做才可以呢?

         分页查询时,Sql语句使用limit关键字,需要传入开始索引和每页条数两个参数。MyBatis的多参数处理有以下方式:

一、顺序传参

        Sql中的参数使用arg0,arg1...或param1,param2...表示参数的顺序。此方法可读性较低,在开发中不建议使用。但是我这里测试的时候,参数可以随便定义的,并不一定按照上述的格式来定义

1. 持久层接口方法

/*** 分页查询 -- 顺序传参* @param startIndex 开始索引* @param pageSize 每页条数* @return*/List<User> findPage(int startIndex,int pageSize);

2. UserMapper.xml映射文件新增标签

<!-- 分页查询-顺序传参 --><select id="findPage" resultType="com.mybatisstudy.pojo.User">select * from user limit #{param1},#{param2}</select>

这里我发现不用定义参数类型类型也可以 

3. 新增测试方法

// 测试分页查询方法 -- 顺序传参@Testpublic void testFindPage(){List<User> users = userMapper.findPage(0,3);users.forEach(System.out::println);}

4. 运行结果

由于这里的起始条数是从0开始,数据的id从1开始,所以,别惊讶 

二、@param传参

        在接口方法的参数列表中通过@Param定义参数名称,在Sql语句中通过注解中所定义的参数名称指定参数位置。此方式参数比较直观的,推荐使用。

1. 持久层接口方法

/*** 分页查询 -- @param传参* @param startIndex 开始索引* @param pageSize 每页条数* @return*/List<User> findPage1(@Param("startIndex")int startIndex,@Param("pageSize")int pageSize);

2. UserMapper.xml映射文件新增标签

<!-- 分页查询-@param传参 --><select id="findPage1" resultType="com.mybatisstudy.pojo.User">select * from user limit #{startIndex},#{pageSize}</select>

注意,这里里面的参数就一定要和持久层接口的参数一致,否则就会报错 

3. 新增测试方法

// 测试分页查询方法 -- @param传参@Testpublic void testFindPage1(){List<User> users = userMapper.findPage1(3,3);users.forEach(System.out::println);}

4. 运行结果

三、自定义POJO类传参

        自定义POJO类,该类的属性就是要传递的参数,在SQL语句中绑定参数时使用POJO的属性名作为参数名即可。此方式推荐使用。

1. 自定义POJO类

        由于这里我们需要两个参数,一个是查询开始条数,一个是每页有多少条数,所以这个pojo类只需要两个参数即可

package com.mybatisstudy.pojo;public class PageQuery {private int startIndex;private int pageSize;public PageQuery(int i, int i1) {this.startIndex = i;this.pageSize = i1;}public int getStartIndex() {return startIndex;}public void setStartIndex(int startIndex) {this.startIndex = startIndex;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}
}

2. 持久层接口方法

/*** 分页查询 -- POJO传参* @param PageQuery* @return*/List<User> findPage2(PageQuery pageQuery);

3. UserMapper.xml映射文件新增标签

<!-- 分页查询-POJO传参 --><select id="findPage2" resultType="com.mybatisstudy.pojo.User" parameterType="com.mybatisstudy.pojo.PageQuery">select * from user limit #{startIndex},#{pageSize}</select>

        这里同样需要注意的是,参数名称要和自定义的POJO类的成员变量名要一致,否则同样会报错 

4. 新增测试方法

// 测试分页查询方法 -- POJO传参@Testpublic void testFindPage2(){PageQuery pageQuery = new PageQuery(2,3);List<User> users = userMapper.findPage2(pageQuery);users.forEach(System.out::println);}

5. 运行结果

四、Map传参

        如果不想自定义POJO,可以使用Map作为传递参数的载体,在SQL语句中绑定参数时使用Map的Key作为参数名即可。此方法推荐使用

1. 持久层接口方法

/*** 分页查询 -- Map传参* @param Map* @return*/List<User> findPage3(Map<String,Object> params);

2. UserMapper.xml映射文件新增标签

<!-- 分页查询-Map传参 --><select id="findPage3" resultType="com.mybatisstudy.pojo.User" parameterType="map">select * from user limit #{startIndex},#{pageSize}</select>

        这里同样需要注意的是,参数个数要和你map集合的个数一致,并且参数名称要和map集合里面的key的名称要一致,否则同样报错

3. 新增测试方法

// 测试分页查询方法 -- Map传参@Testpublic void testFindPage3(){Map<String,Object> params = new HashMap<>();params.put("startIndex",0);params.put("pageSize",4);List<User> users = userMapper.findPage3(params);users.forEach(System.out::println);}

4. 运行结果

        OK,以上就是mybatis分页查询时可以用到的四种传参方式,简单易上手,快来和我一起操作吧 ~ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/256292.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis分页插件

目录 分页插件 Mybatis插件典型适用场景 实现思考 第一个问题 第二个问题 自定义分页插件 分页插件使用 添加pom依赖 插件注册 调用 代理和拦截是怎么实现的 PageHelper 原理 分页插件 MyBatis 通过提供插件机制&#xff0c;让我们可以根据自己的需要去增强MyBati…

Mybatis——分页

1.为什么要分页&#xff1f; 减少数据的处理量使用Limit分页 select * from user limit startIndex,pageSize;使用Mybatis实现分页&#xff0c;核心SQL 1.数据库文件-db.properties drivercom.mysql.jdbc.Driver urljdbc:mysql://localhost:3306/mybatis?useSSLfalse&…

Mybatis实现分页的三种方式

文章目录 1、Limit实现分页2、RowBounds分页&#xff08;不建议使用&#xff09;3、MyBatis分页插件PageHelper&#xff08;了解即可&#xff09; 1、Limit实现分页 sql语句 SELECT * from user limit startIndex,pageSize简单示例&#xff1a; user表 查询一&#xff1a;从第…

Mybatis的四种分页方式详解

LIMIT关键字 mapper代码 select * from tb_user limit #{pageNo}, #{pageSize} 业务层直接调用 public List findByPageInfo(PageInfo info) { return userMapper.selectByPageInfo(info); } 3&#xff0c;优点 灵活性高&#xff0c;可优化空间大 mysql分页语句优化 4&…

mybatis实现分页的几种方式

本文目录 借助数组进行分页借助Sql语句进行分页拦截器分页RowBounds实现分页 借助数组进行分页 原理&#xff1a;进行数据库查询操作时&#xff0c;获取到数据库中所有满足条件的记录&#xff0c;保存在应用的临时数组中&#xff0c;再通过List的subList方法&#xff0c;获取到…

【分布式应用】ELK企业级日志分析系统

一、ELK 简介 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用&#xff0c; 完成更强大的用户对日志的查询、排序、统计需求。 1.1 ELK各组件介绍 ElasticSearch&#xff1a; 是基于Lucene&#xff08;一个…

Rust每日一练(Leetday0016) 全排列I\II、旋转图像

目录 46. 全排列 Permutations &#x1f31f;&#x1f31f; 47. 全排列 II Permutations II &#x1f31f;&#x1f31f; 48. 旋转图像 Rotate Image &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专…

win10操作系统官网如何下载ios境像文件安装操作系统

1.打开官网 2.立即下载工具 3.正在准备进行工作 4.接收条款 5.根据需求选择安装合适的位置 6.等待创建成功 7.右键选择装载 8.双击安装setup.exe文件 8 使用微Pe安装过程中发现需要联网更新解决 winR 然后cmd 输入 OOBE\BYPASSNRO 9 或者关闭此进程 电脑不要插网线&#xff…

虚拟机系统iso镜像下载_如何下载正版系统镜像

许多网友想装系统&#xff0c;可是不会装(后期会推装系统的文章)&#xff0c;而且网上的系统有的装有全家桶&#xff0c;有的又有捆绑软件&#xff0c;严重的还有病毒。那么&#xff0c;在哪里去下载正版&#xff0c;安全的系统镜像呢 "MSDN&#xff0c;我告诉你"这个…

自定义IOS系统弹框

写在之前 系统的弹框虽然很好看&#xff0c;但是有时候无法完全满足UI设计的需求&#xff0c;比如说中间要显示一个输入框&#xff0c;或者要放置一张图片&#xff0c;这里介绍一个很早之前的自定义弹框库&#xff0c;这个自定义弹框sdk写的很细致&#xff0c;定制性很强&…

华为vivo小米魅族oppo荣耀安卓手机刷IOS苹果系统

现在的刷机教程层出不穷&#xff0c;但是没有哪个大神可以开发出一款安卓刷IOS的工具&#xff0c;使得安卓手机或者安卓平板变成IOS苹果系统&#xff0c;这个工具除了可以刷安卓手机也可以刷安卓平板&#xff0c;网友实测&#xff0c;如果设备不支持的话软件会提醒不支持&#…

android高仿ios11系统,安卓仿ios11桌面全套文件

安卓手机想要苹果11的桌面的话&#xff0c;安卓仿ios11桌面全套文件app就可以帮您实现哦。安卓仿ios11桌面全套文件app是一款超级优质的手机桌面工具软件&#xff0c;平台上面拥有海量的壁纸资源&#xff0c;大家可以任意选取哦。 应用说明 修改负一屏效果 修改dock栏模糊度 修…

软件配置 | ios系统Clion下载、安装、配置环境

软件配置 软件配置 | ios系统Clion下载、安装、配置环境 软件配置下载、安装gClion 调试参考链接下载、安装调试 本文总结ios系统下Clion下载、安装、配置环境过程和可能碰到的问题。 因为是在私人电脑&#xff08;ios&#xff09;上配置的Clion&#xff0c;我还不太熟悉自己的…

iOS 13.0 至 13.7 平刷系统教程

来自 : 某QQ群分享文件&#xff0c;整理后发布 如侵权告知删除 关于 Succession 平刷插件信息&#xff1a; 插件&#xff1a;Succession 版本&#xff1a;1.4.15 开发者&#xff1a;Samg_is_a_Ninja 系统支持&#xff1a;iOS 10 至 13.7 用途&#xff1a;平刷当前系统 补充&am…

ios添加邮件收件服务器,iOS 系统邮件的基础使用

尽管有好多人的主力邮件是 Gmail,客户端的首选也是 Gmail,但是在国内的互联网环境中不可避免的要使用到本土的一些邮件服务。对于这些轻量级的服务我选择用系统自带的邮件应用进行统一的管理。本文主要讲解在系统自带邮件中,如何使用国内常用的邮件服务:如网易邮箱、QQ 邮箱…

关闭app服务器系统,ios12系统服务哪些关掉

类型&#xff1a;ios系统工具大小&#xff1a;38.7M语言&#xff1a;中文 评分&#xff1a;10.0 标签&#xff1a; 立即下载 ios12更新后&#xff0c;很多服务功能都开启了&#xff0c;是比较费电的&#xff0c;用户可以前往设置进行关闭来省电等&#xff0c;那ios12系统服务哪…

ios android 系统占用空间,iOS 系统占用了 20G 储存空间?别担心,教你快速解决!...

如果你曾经查看过自己 iOS 设备的储存空间使用情况&#xff0c;那么你可能见到过下面这种情形&#xff1a; 你可能发现了&#xff0c;系统所占据的空间太大了&#xff0c;远超过了正常的范围&#xff0c;这是怎么回事呢&#xff1f;下面就为大家解释一下出现这类情形的几种解决…

如何关闭iOS系统自动更新?最新屏蔽升级描述文件下载

新老司机朋友们晚上好&#xff0c;隔壁老王又来和大家见面了&#xff0c;鸽了有一段时间了&#xff0c;非常抱歉~ 众所周知&#xff0c;iOS 系统一直保持着较高的更新频率&#xff0c;但并不是所有用户都喜欢将自己的设备升级到最新版本&#xff0c;尤其是一些旧型号的 iPhone…

如何下载和安装 iOS开发教程

步骤 1: 在App Uploader网站&#xff0c;点击“Windows版本”下载 。 步骤 2: 在弹出框中&#xff0c;点击“下载”。 步骤 3&#xff1a;在弹出框中&#xff0c;点击“文件夹”打开。 步骤:4&#xff1a;右键选择“解压全部文件”。 步骤5&#xff1a;在弹出框中&#xff0c…

ios系统安装包下载_iOS在后台自动升级?一招教你屏蔽iOS更新

苹果产品一直被用户喜爱的最大的特点就是因为iOS系统&#xff0c;iOS系统有着流畅的体验以及完善的生态环境&#xff0c;因此历年新款iPhone都处于畅销状态。但是随着苹果旗下产品发布的越来越多&#xff0c;比如到目前为止苹果已经发布了15款iPhone产品&#xff0c;从最早的第…