程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

#{}和${}的区别:

发布于2023-02-04 17:53     阅读(347)     评论(0)     点赞(16)     收藏(1)


1.#{}是预编译处理,是占位符,${}是字符串替换,是拼接符。

2.Mybatis在处理#{}的时候会将sql中的#{}替换成?号,调用PreparedStatement来赋值

#{}将传入的数据当作一个字符串,会对传入的数据加上一个双引号。

比如,select * from student where student_name = #{studentName}

如果传入的值为xiaoming,那么解析成sql的值为student_name="xiaoming"

3.Mybatis在处理${}的时候就是把${}替换成变量的值,调用Statement来赋值

${}将传入的数据直接显示生成在sql中;

如:select ${fieldNmae} from student where student_age = 18

  传入的参数作为要查询的字段,如果传入的值为student_name,则解析成的sql为:

select student_name from student where age = 18

4. #{}方式能够很大程度上防止sql注入

5.${}无法防止sql注入。

6.${}方式一般用于传入数据库对象,例如列表和表名。

7.由于#{}方式具有更高的安全行,所以能用#{}的地方尽量不要使用${}。

8.Mybatis排序时使用order by动态参数时需要注意,用${}而不是#{}。

原文链接:https://blog.csdn.net/weixin_50977434/article/details/127782942



所属网站分类: 技术文章 > 博客

作者:码神

链接:http://www.javaheidong.com/blog/article/641189/47732f658c5533a7cd30/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

16 0
收藏该文
已收藏

评论内容:(最多支持255个字符)