现在大多项目都是使用Mybatis了,但也有些公司使用Hibernate。使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数。面对各种复杂的业务场景,传递参数也是一种学问。

下面给大家总结了以下几种多参数传递的方法。

方法1:顺序传参法

public User selectUser(String name, int deptId);<select id="selectUser" resultMap="UserResultMap">select * from userwhere user_name = #{0} and dept_id = #{1}
</select>

#{}里面的数字代表你传入参数的顺序。

这种方法不建议使用,sql层表达不直观,且一旦顺序调整容易出错。

方法2:@Param注解传参法

public User selectUser(@Param("userName") String name, int @Param("deptId") deptId);<select id="selectUser" resultMap="UserResultMap">select * from userwhere user_name = #{userName} and dept_id = #{deptId}
</select>

#{}里面的名称对应的是注解@Param括号里面修饰的名称。

这种方法在参数不多的情况还是比较直观的,推荐使用。

方法3:Map传参法

public User selectUser(Map<String, Object> params);<select id="selectUser" parameterType="java.util.Map" resultMap="UserResultMap">select * from userwhere user_name = #{userName} and dept_id = #{deptId}
</select>

#{}里面的名称对应的是Map里面的key名称。

这种方法适合传递多个参数,且参数易变能灵活传递的情况。

方法4:Java Bean传参法

public User selectUser(Map<String, Object> params);<select id="selectUser" parameterType="com.test.User" resultMap="UserResultMap">select * from userwhere user_name = #{userName} and dept_id = #{deptId}
</select>

#{}里面的名称对应的是User类里面的成员属性。

这种方法很直观,但需要建一个实体类,扩展不容易,需要加属性,看情况使用。

有收获的话,分享下朋友圈给更多的人吧!

关注Java技术栈微信公众号,在后台回复:架构,获取栈长整理的架构教程,都是实战干货,以下仅为部分预览。

  • 分布式 ID 生成器的解决方案总结
  • 分布式 Session 共享解决方案
  • 分布式锁与幂等性问题解决方案
  • 微服务架构及分布式事务解决方案
  • 高并发大流量访问处理及解决方案
  • ……

mybatis传递多个参数_Mybatis传递多个参数的4种方式(干货)相关推荐

  1. delphi 异步 调用 带参数_Dubbo 关于同步/异步调用的几种方式

    我们知道,Dubbo 缺省协议采用单一长连接,底层实现是 Netty 的 NIO 异步通讯机制:基于这种机制,Dubbo 实现了以下几种调用方式: 同步调用 异步调用 参数回调 事件通知 同步调用 同 ...

  2. mybatis的mysql参数传递参数_mybatis 传递参数的方法总结

    有三种mybatis传递参数的方式: 第一种 mybatis传入参数是有序号的,可以直接用序号取得参数 User selectUser(Stringname,String area); 可以在xml配 ...

  3. mysql batis传多个参数_Mybatis传多个参数(三种解决方案)

    据我目前接触到的传多个参数的方案有三种. 第一种方案 DAO层的函数方法 Public User selectUser(String name,String area); 对应的Mapper.xml ...

  4. SSM整合之Mybatis笔记( MyBatis获取参数值的两种方式(重要))(P020—P025)

    P20 MyBatis获取参数值的两种方式(重要) 一.什么叫做获取取参数值的两种方式 以后在我们开发是方向B/S系统,然后我们现在要做的任务通过浏览器/页面/视图 收集用户输入的一些数据,然后把这些 ...

  5. mybatis常见问题处理:批量操作,传递多个参数,like语句写法等等

    1.当实体类中的属性名和表中的字段名不一样 解决办法①:  通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致  <select id="selectorde ...

  6. Mybatis查询传递单个参数和传递多个参数用法

    一:单个参数,Mybatis不会做特殊处理 二:多个参数,Mybatis会做特殊处理 1:传递多个多个参数时候,第一种写法如下 比如传递了两个参数,用 #{param1} and  #{param2} ...

  7. 五、深入理解Mybatis中的参数parameterType (传递一个简单参数,传递多个参数:@Param、使用自定义对象、按位置、使用Map)

    1.1 parameterType parameterType: 接口中方法参数的类型, 类型的完全限定名或别名.这个属性是可选的,因为 MyBatis可以推断出具体传入语句的参数,默认值为未设置(u ...

  8. 2020-08-10 Mybatis配置、使用Map集合传递SQL参数、核心配置文件解析、给包取别名

    mybatis配置错误解析 注意!在Mapper.xml的配置文件中,namespace的路径要写成这种形式 <mapper namespace="com.wang.Dao.UserM ...

  9. mybatis 传递参数的三种方式

    mybatis 框架的主要工作是数据层, 侧重于与数据库打交道的sql语句的编写,对sql也要求比较熟练. mybatis 传递参数的方式主要有三种: 1. 多个参数的传递方式    形式如:    ...

最新文章

  1. 手把手教你简单接入微信SDK
  2. stdthread(5)并发atomic
  3. 【做题记录】 [JLOI2011]不等式组
  4. 华为云整合三朵云能力,第二阶段决战大政企战场
  5. Enews博客/CMS/双模式主题源码
  6. web前端性能优化总结 1
  7. PO系列之 使用XPI_INSPECTOR跟踪PO报错
  8. 2013 B 碎纸片拼接与复原
  9. 一篇文章告诉你什么是社群运营
  10. 基于LASSO的波士顿房价分析
  11. 手机屏幕如何投屏到电脑上(Windows10)
  12. 那些年啊,那些事——一个程序员的奋斗史 ——33
  13. 电池高压安全注意事项
  14. python程序设计山东联盟期末考试_知到_Python程序设计基础(山东联盟)_章节测试答案...
  15. Hive2.x、HiveServer、HiveServer2简述及Beeline使用
  16. WebP 文件及其编码解码工具(WebPconv)
  17. WPARAM 与 LPARAM
  18. Django CSRF(什么是CSRF?)\Django前后端分离csrf token获取方式
  19. MS CRM2011库文件升级到CRM2015
  20. 长时长视频java存储及vue播放解决方法

热门文章

  1. Boost Asio总结(3)异步通信
  2. 深度学习的数学 (4)张量、矩阵、导数
  3. union一个有趣的应用
  4. [密码学] 消息认证码基础
  5. Kubernetes API 聚合开发汇总
  6. 【Flask】request请求
  7. OPTEE的内存管理 :页表的创建过程
  8. 免费Opengrok-代码阅读工具:Kernel,Optee,ATF,Uboot...
  9. optee的Offline Signing of TAs方案
  10. django一对多、多对多模型、自关联的建立