Mybatis中传递多个参数的4种方法总结 Mybatis是当前最流行的持久层框架之一,广泛应用于各种项目中。使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数。面对各种复杂的业务场景,传递参数也是一种学问。本文将总结Mybatis中传递多个参数的4种方法,并且介绍了关于使用Mapper接口时参数传递方式。 方法1:顺序传参法 顺序传参法是Mybatis中传递多个参数的一种方法。该方法使用#{ }里的数字代表传入参数的顺序。例如,如果我们需要传递两个参数,可以使用#{0}和#{1}来代表这两个参数。这种方法不建议使用,sql层表达不直观,且一旦顺序调整容易出错。 方法2:@Param注解传参法 @Param注解传参法是Mybatis中传递多个参数的另一种方法。该方法使用@Param注解来指定参数的名称。例如,如果我们需要传递两个参数,可以使用@Param("param1")和@Param("param2")来指定这两个参数的名称。这种方法在参数不多的情况还是比较直观的,推荐使用。 方法3:Map传参法 Map传参法是Mybatis中传递多个参数的第三种方法。该方法使用Map来传递参数。例如,如果我们需要传递两个参数,可以使用Map<String,Object> map = new HashMap<>();map.put("param1","value1");map.put("param2","value2");来传递这两个参数。这种方法适合传递多个参数,且参数易变能灵活传递的情况。 方法4:Java Bean传参法 Java Bean传参法是Mybatis中传递多个参数的第四种方法。该方法使用Java Bean来传递参数。例如,如果我们需要传递两个参数,可以使用User类,其中包括两个成员变量param1和param2。这种方法很直观,但需要建一个实体类,扩展不容易,需要加属性,看情况使用。 使用Mapper接口时参数传递方式 Mybatis在使用Mapper接口进行编程时,其实底层是采用了动态代理机制,表面上是调用的Mapper接口,而实际上是通过动态代理调用的SqlSession的对应方法,如selectOne()。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中传递多个参数的4种方法总结,希望本文的内容对大家的学习或者工作具有一定的参考学习价值。如果有疑问大家可以留言交流,谢谢大家对我们的支持。
- 粉丝: 3
- 资源: 924
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 5G模组升级刷模块救砖以及5G模组资料路由器固件
- C183579-123578-c1235789.jpg
- Qt5.14 绘画板 Qt Creator C++项目
- python实现Excel表格合并
- Java实现读取Excel批量发送邮件.zip
- 【java毕业设计】商城后台管理系统源码(springboot+vue+mysql+说明文档).zip
- 【java毕业设计】开发停车位管理系统(调用百度地图API)源码(springboot+vue+mysql+说明文档).zip
- 星耀软件库(升级版).apk.1
- 基于Django后端和Vue前端的多语言购物车项目设计源码
- 基于Python与Vue的浮光在线教育平台源码设计