mybatis中# 和$ 符号的区别

#{} 和${}都是在sql语句当中使用

区别在于

1.sql解析语句的时候会在#{}传入的数据加引号,而不会在${}加引号(显示的是原来的sql)

即:

#{}    select  * from table1 where id=#{id}  -->select * from table1 where id='2' 

${}    select * from table1 where id=${id} -->select * from table1 where id=2

2.也正是如此, #{}能够很大程度防止sql注入,而${}是元语句输出

3.$方式一般用于传入数据库对象,例如传入表名.一般能用#的就别用$

MyBatis排序时使用order by 动态参数时需要注意,用$而不是#

如:

select * from ${tableName} order by ${id} 这里需要传入表名和按照哪个列进行排序

加入传入table1、id 则语句为:select * from table1 order by id

如果是使用#{} 则变成了select * from 'table1' order by 'id' 我们知道这样就不对了。

参考借鉴:

http://blog.csdn.net/kobi521/article/details/16941403

http://www.cnblogs.com/teach/p/5685545.html

转载于:https://my.oschina.net/anlve/blog/1036502

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值