首页 > 其他分享 >【Mybatis】#和$的区别

【Mybatis】#和$的区别

时间:2022-11-11 16:57:35浏览次数:48  
标签:name 传入 区别 参数 SQL Mybatis id select

#传入的参数在SQL中显示为字符串,$传入的参数在SqL中直接显示为传入的值.

#方式能够很大程度防止sql注入,$方式无法防止Sql注入;

1、传入的参数在SQL中显示不同

#传入的参数在SQL中显示为字符串(当成一个字符串),会对自动传入的数据加一个双引号。

例:使用以下SQL

select id,name,age from student where id =#{id}
当我们传递的参数id为 "1" 时,上述 sql 的解析为:

select id,name,age from student where id ="1"
$传入的参数在SqL中直接显示为传入的值

例:使用以下SQL

select id,name,age from student where id =${id}
当我们传递的参数id为 "1" 时,上述 sql 的解析为:

select id,name,age from student where id =1
2、#可以防止SQL注入的风险(语句的拼接);但$无法防止Sql注入。

3、$方式一般用于传入数据库对象,例如传入表名。

4、大多数情况下还是经常使用#,一般能用#的就别用$;但有些情况下必须使用$,例:MyBatis排序时使用order by 动态参数时需要注意,用$而不是#。

标签:name,传入,区别,参数,SQL,Mybatis,id,select
From: https://www.cnblogs.com/cuipengchong/p/16881016.html

相关文章

  • 有状态服务和无状态服务的区别
    状态是web服务的概念,比如不需要登录的浏览门户网站就是无状态的,需要登陆转账买东西这种就是有状态的  有状态服务和无状态服务的区别:       有状态和无......
  • Vue2中的 import 和 require区别与使用方法
    import属于ES6规范,require属于CommonJS规范。一、exportdefault&export+import1、exportdefaultfunction()+importoutput.jsexportdefaultfunction(......
  • C# Hashtable、HashSet和Dictionary的区别
    原文网址:https://blog.csdn.net/yyyyz999/article/details/1248512251.Hashtable哈希表(HashTable)表示键/值对的集合。在.NETFramework中,Hashtable是System.Collect......
  • java使用mybatis-generator实现自动生成model、dao、xml
    pom中添加插件<plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifa......
  • Spring 集成 MyBatis-将对象交给spring管理。
    Spring集成MyBatis​ 将MyBatis与Spring进行整合,主要解决的问题就是将SqlSessionFactory对象交由Spring来管理。所以,该整合,只需要将SqlSessionFactory的对......
  • Intent传递对象——Serializable和Parcelable区别
    前两篇文章讨论了Serializable和Parcelable实现Intent之间传递对象和对象数组的方式,两种方法实现上相似,效果一致,怎么选择用哪种方法实现呢?Intent在不同的组件中传递对象数据......
  • java逻辑运算中 | | 和 | 的区别
    本文主要阐明逻辑运算中||(短路或)和|(逻辑或)的异同||和|的相同之处:只有二者都是假时,结果才为假,否则结果为true。||和|的不同之处在于:a||b:如果a为true......
  • java逻辑运算&&与&的区别
    本文主要阐述&&(短路与)和&(逻辑与)的运算异同:a&&b和a&b:共同之处是只有a和b同时为真时,结果才为真,否则为假不同点在于a&&b(短路与)若a为假时,则无需判断b,直接得出结......
  • 线程池ExecutorService中submit 和execute的区别
    引言   ExecutorService线程池执行线程时有submit和execute两种方法,它们两者之间有什么区别了?可能平时我们只是运用,没有深究其区别,在此我们可以看看它们的区别? ......
  • mybatis xml集合变量
    <sqlid="queryProductByCustomerCodeOrCustomerLineCodeWhere">IS_DELETED='0'<iftest="customerCode!=nullandcustomerCode!=''">andCUSTOMER_CODE=......