首页 > 其他分享 >mybatis接口方法中可以接收各种各样的参数,mybatis底层对于这些参数进行不同的封装处理方式,mybatis底层如何传递参数?

mybatis接口方法中可以接收各种各样的参数,mybatis底层对于这些参数进行不同的封装处理方式,mybatis底层如何传递参数?

时间:2023-01-09 23:11:48浏览次数:43  
标签:map arg0 list put 参数 mybatis 底层

mybatis底层将传进来的参数封装成map集合,每个集合中会有对应的参数值argx,因此假如不使用注解,会出现下面的错误,提醒找不到该参数

### Error querying database.  Cause: org.apache.ibatis.binding.BindingException: Parameter 'mgr' not found. Available parameters are [arg1, arg0, param1, param2]

sql映射文件中的值需要直接从map集合中取出arg参数:

<select id="selectByCond" resultMap="empResultMap">
    select * from emp where mgr=#{arg0}
</select>

或者

<select id="selectByCond" resultMap="empResultMap">
    select * from emp where mgr=#{param1}
</select>

使用@Param是用于替换mybatis中的arg某键名会方便很多。

当传进去的参数为collection

mybatis中的map:

map.put("collection",传入的集合参数);
map.put("arg0",传入的集合参数);

当传进去的参数为list

mybatis中的map:

map.put("collection",传入的list参数);
map.put("list",传入的list参数);
map.put("arg0",传入的list参数);

当传进去的参数为数组

mybatis中的map:

map.put("array",传入的数组参数);
map.put("arg0",传入的数组参数);

其他类型:

map.put("arg0",参数值1);
map.put("param1",参数值1);
map.put("arg1",参数值2);
map.put("param2",参数值2);

标签:map,arg0,list,put,参数,mybatis,底层
From: https://www.cnblogs.com/Liku-java/p/17038812.html

相关文章

  • 关于MyBatis查询属性封装到对象,对象为null的情况源码分析
    源码分析在DefaultResultSetHandler类中getRowValue方法创建映射类相应的对象,如果为列匹配到的值标识foundValues是false,表示没有为对象中任何一个字段映射到一个值,则......
  • 学习笔记——Mybatis映射文件根标签与子标签
    2023-01-09一、Mybatis映射文件1、映射文件根标签mapping标签:该标签中的namespace要求与接口的全类名一致2、映射文件子标签(1)cache(该命名空间的缓冲配置)(2)cache-ref(......
  • dotnet 警惕 Task 的 ContinueWith 带上 OnlyOnFaulted 参数抛出取消异常
    本文记录dotnet的一个令人迷惑的设计,在Task里,有一个叫ContinueWith的方法,此方法可以在Task完成时执行传入的委托。在ContinueWith方法里面,还有一个可选的TaskCo......
  • 学习笔记——Mybatis核心配置文件概述及根标签
    2023-01-09一、Mybatis核心配置文件概述及根标签1、核心配置文件的概述(即“mybatis-config.xml”)MyBatis的配置文件包含了会深深影响MyBatis行为的设置和属性信息。2、......
  • Lambda表达式介绍和底层实现
    如果你的需求需要匿名类来实现,例如是一个只有一个方法的接口,那么匿名类的语法可能看起来比较笨拙和不清晰,尽管匿名类比命名类更简洁,但对于只有一个方法的类来说,即使是匿名类......
  • 【接口自动化测试】【三】参数化
    """参数化test_测试用例的参数,只能传2种1、fixturefixture'test_input'notfound2、传参数化的变量"""importpytestprint("两个参数")@pytest.mark.parametriz......
  • Basler相机功能支持、参数代码查看
    Cameras|Basler(baslerweb.com)以查看acA3088-57umMED为例,查看是否支持Binning功能。   ......
  • mybatisx的安装和使用
    在idea的plugin搜索mybatisx,安装后重启会出现蓝色小鸟和红色小鸟,点击小鸟会跳到对应的另一个小鸟:在接口中添加方法,按住alt+enter可以在蓝鸟那边自动生成声明语句:然后我......
  • MyBatis的动态SQL详解
    MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑。MyBatis中用于实现动态SQL的元素主要有:ifchoose(when,otherwise)trimwheresetforeach......
  • MyBatis:动态SQL
    目录动态SQL介绍搭建环境if语句WhereSetchoose语句SQL片段Foreach总结动态SQL介绍动态SQL指的是根据不同的查询条件,生成不同的Sql语句.官网描述:MyBatis的强大特......