mybatis添加方法可以传map吗_Mybatis中传递多个参数的4种方法总结
前言
现在大多项目都是使用Mybatis了,但也有些公司使用Hibernate。使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数。面对各种复杂的业务场景,传递参数也是一种学问。
下面给大家总结了以下几种多参数传递的方法。
方法1:顺序传参法
#{}里面的数字代表你传入参数的顺序。
这种方法不建议使用,sql层表达不直观,且一旦顺序调整容易出错。
方法2:@Param注解传参法
#{}里面的名称对应的是注解 @Param括号里面修饰的名称。
这种方法在参数不多的情况还是比较直观的,推荐使用。
方法3:Map传参法
#{}里面的名称对应的是 Map里面的key名称。
这种方法适合传递多个参数,且参数易变能灵活传递的情况。
方法4:Java Bean传参法
#{}里面的名称对应的是 User类里面的成员属性。
这种方法很直观,但需要建一个实体类,扩展不容易,需要加属性,看情况使用。
使用Mapper接口时参数传递方式
Mybatis在使用Mapper接口进行编程时,其实底层是采用了动态代理机制,表面上是调用的Mapper接口,而实际上是通过动态代理调用的SqlSession的对应方法,如selectOne(),有兴趣的朋友可以查看DefaultSqlSession的getMapper()方法实现,其最终会获得一个代理了Mapper接口的MapperProxy对象。MapperProxy对象在调用Mapper接口方法时会把传递的参数做一个转换,然后把转换后的参数作为入参调用SqlSession对应的操作方法(如selectOne、insert等)。转换过程可以参考MapperMethod的execute()方法实现。简单来说是以下规则:
1、如果传递过来是单参数,且没有以@Param注解进行命名,则直接将单参数作为真实的参数调用SqlSession的对应方法。
2、如果传递过来的不是单参数或者是包含以@Param注解进行命名的参数,则会将对应的参数转换为一个Map进行传递。具体规则如下:
2.1、 会把对应的参数按照顺序以param1、param2、paramN这样的形式作为Key存入目标Map中,第一个参数是param1,第N个参数是paramN。
2.2、 如果参数是以@Param注解命名的参数,则以@Param指定的名称作为Key存入目标Map中。
2.3、 如果参数不是以@Param注解命名的,则按照顺序以0、1、N这样的形式作为Key存入目标Map中,第一个参数是0,第N个参数是N。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
mybatis添加方法可以传map吗_Mybatis中传递多个参数的4种方法总结相关推荐
- WebAPI Post模式下传递、接收参数的几种方法
创建实体类 前一篇博客讲了Get模式下的传递.接收参数的几种方法,现在来介绍一下Post模式下传递.接收参数的几种方法.首先还是老样子,创建一个空的ASP.NET WebAPI工程,在Models文件 ...
- Action 中接收表单参数的3种方法总结
(1) Action 中使用属性接受参数 @ Action中需要包含与表单参数对应的setXxx()方法: @ 简单易用,但当表单参数较多时不太适用: (2)使用DomainModel( 域模型:系统 ...
- WebAPI Get模式下传递、接收参数的几种方法
创建实体类 创建一个空的ASP.NET WebAPI工程,在Models文件夹下创建一个实体类:User,代码如下: using System; using System.Collections.Ge ...
- mybatis添加方法可以传map吗_Mybatis创建方式二
今天我们一起来学习一下Mybatis的另一种创建方式:mapper接口的创建方法 这里就不再写导包的步骤了 第一步:创建Mybatis的xml文件 <?xml version="1.0 ...
- mybatis中mapper接口的参数设置几种方法
方法一:忽略parameterType,加@param("xxx")注解 在mapper接口中加上@param("xxx")注解,则在配置文件中直接用即可 Li ...
- vbs执行ctrl+空格_VBS中解决路径带空格的三种方法
vbs中,如果需要运行的程序中带有空格,按照通常的方式往往会提示错误,其实有两种形式不同的解决方法: 在应用程序前后分别加三个双引号,代码如下: Set wshell=CreateObject(&qu ...
- mysql模糊查询xml_在userMapper.xml文件中模糊查询的常用的3种方法
在userMapper.xml文件中新建映射sql的标签 select from users name like "%"#{name}"%" and phone ...
- JS获取URL中参数值(QueryString)的4种方法分享
http://www.jb51.net/article/48942.htm JS获取URL中参数值(QueryString)的4种方法分享 作者: 字体:[增加 减小] 类型:转载 今天碰到要在一个页 ...
- python 命令-python解析命令行参数的三种方法详解
这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python解析命令行参数主要有三种方法: ...
最新文章
- java解析各种文档格式_java读取各类型的文件
- python绘制月亮_用python画月亮的代码是什么?
- 下一代Asp.net开发规范OWIN(2)—— Katana介绍以及使用
- Android 2.2
- 如何选择String
- 历经5代跨越25年的RTC架构演化史
- 计算机考试演示文稿模板,2018职称计算机考试PowerPoint习题10
- 第三章:选择结构(一)
- 百度推出海外版网盘:竟免费不限速
- 【Flink】Flink 与数据库的集成最佳实践 【视频笔记】
- sql转化为int类型
- 联想小新潮7000-13 型号:LENOVO 81BS 制作黑苹果,MACos 10.14.2+WIN 10 双系统
- 小程序colorui引入与使用
- mysql数据库修改约束_mysql约束以及数据库的修改
- ios 直播间点赞动画
- MVC、MVP、MVVM:谁才是Android开发的终极之选?
- 为什么计算机不能进行十进制,计算机为什么用二进制而不是十进制?
- 图像正交变换的研究意义
- SeaJS入门教程系列之使用SeaJS(二)
- linux 问题-——退出vi编辑器 wq失效
热门文章
- 地平线机器人_地平线机器人CEO余凯:基于深度学习的自动驾驶之路
- 一个快速生成元素背景的 React 组件
- 产品经验谈:推荐系统实战案例-如何寻找有用的用户行为?
- 跨语言、多语言信息检索
- Python应用实战-Clumper | dplyr式的Python数据操作包
- 中科软测试面试题2019_2019国考成绩今日是否会发布,笔试120能进面不?
- java同步方法的特点_java多线程有哪些优点?同步实例代码展示
- oracle sql为null值,在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办
- 平台日志架构说明log4j漏洞问题解析
- Vue过渡 动画混入