mybatis中参数详解、#{}与${}

一:Mybatis的两个内置参数

两个内置参数: _paramete 和 _databaseId

   _paramete参数:代表接口方法传过来的全部参数封装为Map集合
  			当接口方法参数列表只有一个:#{ _paramete}  就可以取到该值
  			当接口方法参数列表多个参数:
  						#{ _paramete.key}   key是传入参数的名称
  				   或者 #{param1}  #{param2}  #{param3} ....   #{paramN}取值


  
   _databaseId参数:
  			如果配置了databaseIdProvider标签
  			_databaseId就是代表当前数据库的别名

二、各种参数的处理

1、单个参数

如果接口方法传入的只有一个参数,在映射文件得到参数的方法???

   1、使用 #{_paramete}  内置参数处理
   2、使用 #{参数名} ,单个参数名字可以随便取
   3、如果该单个参数是一个自定义类,直接写 #{属性}

2、多个参数

如果接口方法传入的有多个参数,在映射文件得到参数的方法???

  1、 使用_paramete内置对象:#{ _paramete.key} 或者#{param1}  #{param2} } ....   #{paramN}取值

  2、把所有的参数封装为一个Map集合或者Bean中 ,只传入这个类

  	3、在接口方法参数前:@Param("引用名称")    -->  #{引用名称}
  	
  	4、如果想获得某个参数的属性,可以通过 . 的形式

3、传入参数是Collection或者数组怎么取值

如果接口方法传入list、int[]、set,在映射文件得到参数的方法???

该参数的key:  
  		Collection: key为  collection或者list
  		数组的key为: array

  	#{collection[0]}   #{list[0]}
  	#{array[0]}

三、Mybatis中的#{} 与${} 取值

   1、#{ }或者 ${ } 都可以得到参数的值

   2、#{}防止SQL注入,是经过ps处理的,以占位符的方式

   3、${}以 字符串拼接 的方式设置sql的,存在注入问题

   4、${}在写sql时可以放到字符串里面 如:"%${name}%" ,但是#{}不可以,但是可以使用concat函数拼接
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小镇男孩~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值