参考地址:https://blog.csdn.net/zymx14/article/details/78067452
官网地址:http://www.mybatis.org/mybatis-3/sqlmap-xml.html#Parameters
官网地址章节:"Parameters -> String Substitution" 具体讲解了#和$的区别。
使用${}方式传入的参数,mybatis不会对它进行特殊处理,而使用#{}传进来的参数,mybatis默认会将其当成字符串。可能在赋值给如id=#{id}和id=${id}看不出多大区别,但是作为表名或字段参数时可以明显看出,可以看看下面的例子:
假设传入的参数为表名test
selec * from #{table};
解析后是:
select * from 'test';
对于下面的SQL
select * from ${table};
解析后是:
select * from test;
很明显,上面例子中第一个SQL使用#解析之后SQL运行出错,第二个SQL可以正常执行。
所以对于传入分组(group by)字段或者排序字段(order by),应使用${},避免出现order by 'id' 等情况。
#和$在预编译处理中是不一样的。#类似jdbc中的PreparedStatement,对于传入的参数,在预处理阶段会使用?代替,比如:
select * from student where id = ?;
待真正查询的时候即在数据库管理系统中(DBMS)才会代入参数。
而${}则是简单的替换,如下:
select * from student where id = 2;
总结
1、能使用#{}的地方应尽量使用#{}
2、像PreparedStatement ,#{}可以有效防止sql注入,${}则可能导致sql注入成功。
相关推荐
mybatis面试题#和$的区别.pdf
主要介绍了Mybatis中#{}和${}传参的区别及#和$的区别小结 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
主要介绍了浅谈Mybatis #和$区别以及原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
下面小编就为大家带来一篇浅谈mybatis中的#和$的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
今天小编就为大家分享一篇关于Mybatis下动态sql中##和$$的区别讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
很全很全:并且有项目实例 例如:mybatis中的#和$的区别? 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111",...
mybatis和ibatis总体来讲都差不多的。下面小编给大家探讨下mybatis中#{}和${}的区别,感兴趣的朋友一起学习吧
#{变量名}可以进行预编译、类型匹配等操作,#{变量名}会转化为jdbc的类型。很多朋友不清楚在mybatis中#号与美元符号的不同,接下来通过本文给大家介绍两者的区别,感兴趣的朋友参考下吧
下面小编就为大家带来一篇浅谈mybatis中的#和$的区别 以及防止sql注入的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了Mybatis之#{}与${}的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
09参数处理、# 和 $ 的区别.md
主要介绍了Mybatis中#{}与${}的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了Mabitis中的#与$符号区别,需要的朋友可以参考下
主要介绍了Mybatis中的 ${} 和 #{}区别与用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
主要介绍了mybatis #{}和${}的区别、传参、基本语法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
主要介绍了Mybatis中的 ${ } 和 #{ }的区别使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
16. Mybatis 中#和$的区别? 17. Mybatis 的使用步骤是什么样的? 18. 使用 MyBatis 的 mapper 接口调用时有哪些要求 19. mybatis的缓存机制,一级,二级介绍一下。 20. 视图解析器本质是什么 21. 统一解决get...
本文详细介绍了在Mybatis框架 mapper.xml文件中parameterType传递参数常用的几种方式,以及如何实现的案列,同时#和$传参的区别。
主要介绍了Mybatis Plus和Mybatis的区别,需要的朋友可以参考下
自己总结的myBatis和ibatis的区别