会员
周边
众包
新闻
博问
闪存
赞助商
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
北鸢南笙
博客园
首页
新随笔
联系
管理
精讲Mybatis··#{}和${}
题目
笔记Notes
面试题目:#{}和${}的区别是什么?
网上的答案是
:#{}是预编译处理,${}是字符串替换。
mybatis在处理#{}时,
会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;mybatis在处理${}时,
就是把${}替换成变量的值。使用#{}可以有效的防止SQL注入,提高系统安全性。
总结Summary
对于这个题目我感觉要抓住两点:
(1)
$符号一般用来当作占位符
既然是占位符,当然就是被用来替换的。知道了这点就能很容易区分$和#,从而不容易记错了。
(2)
预编译的机制。
预编译是提前对SQL语句进行预编译,而其后注入的参数将不会再进行SQL编译。
我们知道,SQL注入是发生在编译的过程中,因为恶意注入了某些特殊字符,最后被编译成了恶意的执行操作
。而预编译机制则可以很好的防止SQL注入。
白茶清欢无别事,我在等风也等你,苦酒折柳今相离,无风无月也无你。
posted @
2021-10-28 16:55
不良徐某
阅读(
54
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
公告