首页 > 其他分享 >#{}与${}的区别

#{}与${}的区别

时间:2022-10-12 14:25:26浏览次数:39  
标签:区别 id 参数 SQL 解析 ORDER 注入

区别:

1. #{} 解析为一个 JDBC 预编译语句(prepared statement)的参数标记符,一个 #{ } 被解析为一个参数占位符;而${}仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换。

2. #{} 解析之后会将String类型的数据自动加上引号,其他数据类型不会;而${} 解析之后是什么就是什么,他不会当做字符串处理。

3. #{} 很大程度上可以防止SQL注入(SQL注入是发生在编译的过程中,因为恶意注入了某些特殊字符,最后被编译成了恶意的执行操作);而${} 主要用于SQL拼接的时候,有很大的SQL注入隐患。

4.在某些特殊场合下只能用${},不能用#{}。例如:在使用排序时ORDER BY ${id},如果使用#{id},则会被解析成ORDER BY “id”,这显然是一种错误的写法。

联系

他们都是在SQL中动态地传入参数


原文链接:https://blog.csdn.net/weixin_44863976/article/details/100626051

标签:区别,id,参数,SQL,解析,ORDER,注入
From: https://www.cnblogs.com/jinseliunian/p/16784357.html

相关文章

  • 关于useState和useRef的区别
    1:  useState的值在每个rernder中都是独立存在的。而useRef.current则更像是相对于render函数的一个全局变量,每次他会保持render的最新状态。这种关系更像是js一个经典......
  • Integer和int的区别?为什么要设计封装类?
    Integer和int的区别:1.Integer默认值是null,int是0;int只需要定义类型直接赋值,而Integer需要创建对象2.Integer值存储在堆内存里面,int是存储在栈空间里面3.Integer作为对象......
  • 关于Java中length、length()、size()的区别
    以前总是觉得自己好像会了,但是某天忽然面对这个笔试题还是会恍惚一下,混淆和答错的几率也很大,不知道有没有其他人像我一样的。所以今天把这个问题记一下,希望印象更深刻。......
  • IPV4和IPV6有何区别?为何IPV6没有普及?
    IP指网际互连协议,InternetProtocol的缩写,是​​TCP/IP​​体系中的网络层协议。IP是整个TCP/IP协议族的核心,也是构成互联网的基础。设计IP的目的是提高网络的可扩展性:一是......
  • Python的常用库及区别——numpy、pandas、matplotlib、scipy
    1.Numpy  numpy是python科学计算的基础包,好多算法都是基于numpy构建的。其功能有:快速高效的多维数组ndarray用于对数组执行元素及计算以及直接对数组执行数字运......
  • 面试官:说说 String.intern() 和常量池?不同 JDK 版本有什么区别?
    0.Background在JAVA语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个......
  • Java中equals和==区别
    “==”和equals的区别......
  • 细数6种垃圾回收器的区别, 快进来看看有没有你要用的
    前言大家好啊,这里是Yve菌,今天给大家详细介绍一下我们在进行GC垃圾回收时的主力军-垃圾回收器.由于我们使用的jdk版本有不同,使用的堆内存大小也不同,这个时候我们......
  • 非关系型数据库(NOSQL)和关系型数据库(SQL)区别详解
    前言:在我们的日常开发中,关系型数据库和非关系型数据库的使用已经是一个成熟的软件产品开发过程中必不可却的存储数据的工具了。那么用了这么久的关系数据库和非关系型数......
  • css中px em rem的区别
    1.px是固定的像素,一旦设置了就无法因为适应页面大小而改变 2.em和rem相对于px更具有灵活性,他们是相对长度单位,意思是长度不是定死了的,更适用于响应式布局 3.em相对于该......