一、顺序传参
在SQL中,参数的顺序有两种表示方式,分别为使用 arg0、arg1…… 和使用 param1、param2……。此方法可读性较低,在开发中不建议使用。在我的测试中,参数的定义并不受限于上述格式,可以随意定义
1. 持久层接口方法
/**
* 分页查询 -- 顺序传参
* @param startIndex 开始索引
* @param pageSize 每页条数
* @return
*/
List findPage(int startIndex,int pageSize); 2. UserMapper.xml映射文件新增标签
这里我发现不用定义参数类型类型也可以
3. 新增测试方法
// 测试分页查询方法 -- 顺序传参
@Test
public void testFindPage(){
List 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 findPage1(@Param("startIndex")int startIndex,@Param("pageSize")int pageSize); 2. UserMapper.xml映射文件新增标签
注意,这里里面的参数就一定要和持久层接口的参数一致,否则就会报错
立即学习“Java免费学习笔记(深入)”;
3. 新增测试方法
// 测试分页查询方法 -- @param传参
@Test
public void testFindPage1(){
List 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 findPage2(PageQuery pageQuery); 3. UserMapper.xml映射文件新增标签
这里同样需要注意的是,参数名称要和自定义的POJO类的成员变量名要一致,否则同样会报错
4. 新增测试方法
// 测试分页查询方法 -- POJO传参
@Test
public void testFindPage2(){
PageQuery pageQuery = new PageQuery(2,3);
List users = userMapper.findPage2(pageQuery);
users.forEach(System.out::println);
} 5. 运行结果

四、Map传参
如果不想自定义POJO,可以使用Map作为传递参数的载体,在SQL语句中绑定参数时使用Map的Key作为参数名即可。此方法推荐使用
1. 持久层接口方法
/**
* 分页查询 -- Map传参
* @param Map
* @return
*/
List findPage3(Map params); 2. UserMapper.xml映射文件新增标签
这里同样需要注意的是,参数个数要和你map集合的个数一致,并且参数名称要和map集合里面的key的名称要一致,否则同样报错
3. 新增测试方法
// 测试分页查询方法 -- Map传参
@Test
public void testFindPage3(){
Map params = new HashMap<>();
params.put("startIndex",0);
params.put("pageSize",4);
List users = userMapper.findPage3(params);
users.forEach(System.out::println);
} 4. 运行结果











