Mybatis传参方法总结

本文详细解析MyBatis中不同参数类型(如基本类型、Map、JavaBean)的传递方式,包括使用#{}

本文Mybatis版本: 3.4.5

简单数据类型的单参数:(基本类型 + String)
parameterType可省略,且参数名为任意都可。

多参数 : (Map、对象属于本范围而不是单一参数)

  1. 顺序

    无需任何额外处理

    使用: 按顺序获取参数

    • #{0},#{1} (此版本会报错,原因详见)
    • #{arg0} , #{arg1}
    • #{param1},#{param2}

    拓:

    • argparam 可以混用,即 #{param1} .. # {arg1}是合法的
    • 源码层面看,最后都是解析成 arg{0~n}
  2. Map

    parameterType="java.util.Map"

    使用: #{key}

    拓:parameterType="map 也是对的,因为有内置的别名

    附:MyBatis的自定义别名和内置别名

  3. @Param

    xxx(@Param("name") String name, @Param("age") int age);

    sql时就可以直接用指定的名字,eg:#{name},不赘述

    源码层面看其实还是封装成Map,简便易用

    附:@Param源码解析(笔者认为这个源码解读有问题,不过用于指导debug思路还是不错的)

  4. Java Bean

    parameterType="全类名"

    使用: #{成员属性}

对比:

  • 不推荐使用顺序传参,因为表达不直观,阅读难度大。
  • @ParamMap 是同一种类型。
    • @Param适合变量不多的情况,比较常用
    • Map适合变量较多的情况
  • Java Bean适合VO等传参,或类的多个属性都需要的情况

附:mybatis 传递参数的7种方法

此文中还介绍了JSON、单一集合类型、对象内置集合类型的传参方法,但并不常用,本文就不累赘了。

拓:

${}有sql注入风险,一般使用#{}。

#{} 和 ${} 的区别

参考资料:

[11、mybatis的映射xml中参数类型的别名](https://www.cnblogs.com/holly8/p/10523592.html)


本文完,有误欢迎指出

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值