SSM框架的sql中参数注入(#和$的区别)

<select id="findUsersByUserName2" resultType="java.util.Map" parameterType="Params">
2 SELECT
3 id as uid,
4 username as uname,
5 password as pwd,
6 account as act,
7 telephone,
8 idcard,
9 create_time as createTime,
10 is_delete as isDelete,
11 male,
12 birthday,
13 email,
14 address,
15 update_time as updateTime,
16 teacher_id as teacherId,
17 subject_id as subjectId,
18 age,
19 status,
20 type
21 FROM
22 tz_user
23 WHERE
24 username LIKE '%${username}%'
25 AND `password` = #{password}
26 ORDER BY ${order}
27 </select>
复制代码
ORDER BY ${order} 和模糊查询 username LIKE '%${username}%' 是用$符号,其他的大多是用 #{} 来获取传递的参数。

ORDER BY 还可以用#{}符号传递参数。

#{} 将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #{userId},如果传入的值是111, 那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".

${} 将传入的数据直接显示生成在sql中,是什么就是什么,没有加双引号:select * from table1 where id=${id} 若 id = 4,则就是:select * from table1 where id = 4;

最好是能用 #{} 就用它,因为它可以防止sql注入,且是预编译的,在需要原样输出时才使用 ${}

记住一点:单引号里面的用 ${} 符号,ORDER BY 可以用${}或者#{}符号,用 #{} 的不能加单引号,因为默认加了引号

转载于:https://www.cnblogs.com/konglxblog/p/8728839.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值