mybatis获取参数时 #{ }和${ }的区别

在mybatis操作数据库的时候,往往会出现参数获取不到,或者报异常的问题
  1. #{ } 和 ${ } 的区别

(1) ${ } :底层其实是statement,必须是使用 “字符串拼接” 的方式操作sql,所以,一定要注意 “单引号” 的使用。并且,不会防止 “sql注入”

(2) #{ }:底层是preparedStatement,可以使用 “通配符” 操作sql,可以自动添加 “单引号”,不需要注意单引号问题。可以防止 “sql注入”。

  1. 获取参数的区别

(1) 如果传进的参数是 string、基本数据类型 或者是 对应的包装类。
      #{ } : 可以通过 “任何的名字” 进行数据的获取
      ${ } :只能使用 “value” 、“_parameter” 来获取

(2) 如果传进的是javabean
      两者 : 都可以通过 “属性名” 直接获取属性值。
      ${ }:需要注意 “单引号” 问题。

(3) 如果传进的是多个参数
      mybatis会将这些参数放在map集合中,所以,获取有两种方法。
      第一种:通过下标。0、1、2、3…
      第二种:通过param1、param2、param3…

      也可以使用在接口中@param(value ="") 进行一个参数的指定

      ${ }:需要注意 “单引号” 问题。

(4) 如果存进的是List、Array
      mybatis会自动将List、Array放在map中。
      List:以list为键;Array:以array为键

(5) 如果存进的是 map参数
      两者都可以通过 “键的名称” 直接获取值,
      ${} : 需要注意单引号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值