专栏首页KrryblogSSM框架的sql中参数注入(#和$的区别)

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

 1 <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 可以用${}或者#{}符号,用 #{} 的不能加单引号,因为默认加了引号

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • controller层中,参数的获取方式以及作用域的问题

    Krry
  • krry-transfer ⏤ 基于 element 的升级版穿梭框组件发布到 npm 啦

    看过我之前博客的同学或许知道我之前写过关于 element 穿梭框组件重构的博客 关于 Element 组件的穿梭框的重构,当时还有一些同学直接通过微信询问很多...

    Krry
  • DOM 元素的循环遍历

    get 方式获取的 dom 元素,仅可使用==for-in、for-of、for==循环

    Krry
  • django中使用tinymce 富文本

    安装完成之后,就可以在D:\python\Lib\site-packages\django_tinymce-2.7.0-py3.6.egg这个文件夹。

    py3study
  • IDC机柜方案对比(孰优孰劣)

    大话IT架构
  • 【图文】腾讯云服务器搭建网站教程(宝塔面板+wordpress)

    建网站本身是没有什么难度的,只是配套需要的东西有些繁琐,我们需要提前准备一些软件之类的必备的东西,其中主要包括:

    云上云
  • Buddy(伙伴)系统分配器之分配page

    Buddy分配器是按照页为单位分配和释放物理内存的,在Zone那一节文章中freearea就是通过buddy分配器来管理的。

    DragonKingZhu
  • vue项目使用tinymce

    TinyMCE官方推荐使用cdn进行加载,但是需要先购买才行,不想购买则只能悬着手动加载TinyMCE。

    李郑
  • 巨头争食下的互联网+体育,离成功还有多远?

    在“互联网+”的推波助澜下,各个行业都在深度融合互联网,全面改造各自生态,沐浴在政策红利之中的体育产业,也在挖掘产业的巨大市场空间。随着以阿里、万达为首的巨头进...

    曾响铃
  • iOS组件化(初)

    Raindew

扫码关注云+社区

领取腾讯云代金券