1. #{}, ${}两种传参数方式的区别

1) ${} 会将传入的参数完全拼接到sql语句中,也就是相当于一个拼接符号。

也就是,最后的处理方式就相当于 

String sql = select * from user where id=${value}....

mybatis会将 ${value} 完全替换为参数 value 的值  相当于replace("${value}", value)的过程。

实际上mybatis 是先将sql转成char数组

然后截取 "${"前头的部分放入到容器,替换  以"${"开头 以 "}"结尾的内容。所以说它的作用相当于拼接符号。拼接后直接作为sql语句的一部分,所以如 果参数是可执行代码,sql是会直接执行的。这就是为什么它会导致sql注入。

2) #{} 是一个占位符, mybatis最后会将这个占位符,替换成?,

最后才进行prepareStatement的相应位置的?的替换,也就是  state.setString(序号,值),setInt(序号,值)....

最新文章

  1. Git命令回顾
  2. C#中方法的声明
  3. h5中websocket
  4. Android学习笔记——SQLite
  5. 【转】CDH5.x升级
  6. log4net 添加自定义日志到数据库
  7. 网络编程之ping
  8. [OGRE]基础教程来七发:来谈一谈缓冲绑定
  9. How to Make LastPass Even More Secure with Google Authenticator
  10. HTML5拖放API
  11. seaJs组建库
  12. JS的事件多次触发,只执行最后一次
  13. spring框架总结(01)
  14. python xml.dom模块解析xml
  15. Luogu5289 十二省联考2019字符串问题(后缀数组+拓扑排序+线段树/主席树/KDTree)
  16. 一个简单SpringBoot例子
  17. Notification html5 的通知api
  18. Coursera台大机器学习技法课程笔记13-Deep Learning
  19. 【BZOJ4036】[HAOI2015]按位或 FWT
  20. 基于 Docker 的现代软件供应链

热门文章

  1. css盒子模型和定位
  2. 第一次亲密接触MSF
  3. Mybatis Generator xml格式配置
  4. IdentityServer4-前后端分离的授权验证(六)
  5. C# 动态事件示例
  6. 添加js,css 版本号?v= hash
  7. Codeforces Round #516 (Div. 2) (A~E)
  8. [模板][P3377]杜教筛
  9. C# 调用windows api 操作鼠标、键盘、窗体合集...更新中
  10. linux find命令用法