Mybatis 通配符# 以及 $的使用


 1. MyBatis中使用parameterType向SQL语句传参,parameterType后的类型可以是基本类型int,String,HashMap和java自定义类型等。 OK~


2.一般用在xml写SQL都是用#,如#{param}。但是有时会看到用$的时候,如${param}。


3. 那么$ 和 # ,有什么区别呢?

   使用#{para}引用参数的时候,Mybatis会把这个参数认为是一个字符串,如:

 <span style="white-space:pre">		</span>update tableName
			   	   <set>
				       tzs            = #{blockCount},
				       tdjz          = #{curBlockNum},
				       tzt           = #{storeStatus},
				       txx 	      = concat(txx, #{fileData}),
				       lastsj         = sysdate
			   	   </set>  
		where tid=#{logID}


此时,#{logID}等价于 ‘123’,对,是一个字符串。


 使用 ${param}引用参数的时候,Mybatis会把这个参数认为是sql一部分,不会当成字符串,常用在动态设置表名时使用。如:

   <update id="selectId" parameterType="java.util.HashMap" statementType="STATEMENT">
<span style="white-space:pre">	</span>       UPDATE ${table}
<span style="white-space:pre">			</span>   <span style="white-space:pre">	</span>   <set>
<span style="white-space:pre">				</span>   <span style="white-space:pre">	</span>   columnA = #{zdsbzt}
<span style="white-space:pre">			</span>   <span style="white-space:pre">	</span>   </set> 
<span style="white-space:pre">					</span>   WHERE columnB = #{zdjh}
<span style="white-space:pre">	</span>                   AND columnC IN
<span style="white-space:pre">	</span>                   <foreach index="index" item="item" collection="list" open="(" close=")" separator=",">
<span style="white-space:pre">	</span>                   <span style="white-space:pre">		</span>${item}
<span style="white-space:pre">	</span>                   </foreach> 
<span style="white-space:pre">	</span>  </update>


   

4.从安全性上考虑,能使用#尽量使用#来传参,因为这样可以有效防止SQL注入的问题。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值