他们之间的区别用最直接的话来说就是:#相当于对数据 加上 双引号,$相当于直接显示数据。

1、#对传入的参数视为字符串,也就是它会预编译,select * from user where name = #{name},比如我传一个csdn,那么传过来就是 select * from user where name = 'csdn';

2、$将不会将传入的值进行预编译,select * from user where name=${name},比如我穿一个csdn,那么传过来就是 select * from user where name=csdn;

3、#的优势就在于它能很大程度的防止sql注入,而$则不行。比如:用户进行一个登录操作,后台sql验证式样的:select * from user where username=#{name} and password = #{pwd},如果前台传来的用户名是“wang”,密码是 “1 or 1=1”,用#的方式就不会出现sql注入,而如果换成$方式,sql语句就变成了 select * from user where username=wang and password = 1 or 1=1。这样的话就形成了sql注入。

4、MyBatis排序时使用order by 动态参数时需要注意,用$而不是#

字符串替换
默认情况下,使用#{}格式的语法会导致MyBatis创建预处理语句属性并以它为背景设置安全的值(比如?)。这样做很安全,很迅速也是首选做法,有时你只是想直接在SQL语句中插入一个不改变的字符串。比如,像ORDER BY,你可以这样来使用:
ORDER BY ${columnName}
这里MyBatis不会修改或转义字符串。

重要:接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会导致潜在的SQL注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。

mybatis #{}和${}的区别相关推荐

  1. Mybatis 和 Mybatis Plus 的区别

    Mybatis Plus Mybatis-Plus是一个Mybatis的增强工具,只是在Mybatis的基础上做了增强却不做改变,MyBatis-Plus支持所有Mybatis原生的特性,所以引入My ...

  2. Mybatis 和 Mybatis Plus 的区别 2020.09.07

    Mybatis Plus Mybatis-Plus是一个Mybatis的增强工具,只是在Mybatis的基础上做了增强却不做改变,MyBatis-Plus支持所有Mybatis原生的特性,所以引入My ...

  3. 什么是Mybatis,为什么要学习Mybatis,mybatis与hibernate区别

    文章目录 为什么要学习mybatis jdbc编程步骤: jdbc的原始方法(未经封装)实现查询数据库表记录 jdbc问题总结: Mybatis解决jdbc编程的问题 Mybatis是什么 Mybat ...

  4. mybatis$和#的区别

    select * from everstar.Questions where ProductType = 'productType' select * from everstar.Questions ...

  5. Mybatis和Hibernate区别

    第一章     Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀 ...

  6. mybatis与ibatis区别

    共同点: 1.都封装了大多数的JDBC样板代码(动态的拼接sql),使得开发者只需要关注sql本身,而无需耗费时间去创建驱动,创建连接.关闭连接: 不同点: 1.ibatis习惯把全局配置文件命名为s ...

  7. Mybatis和JDBC区别

    今天面试中问了这个问题,当时答的不好,现在整理一下. JDBC是Java提供的一个操作数据库的API: MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...

  8. mybatis中#和$区别

    在Mybtis中的Mapper映射文件中,sql语句传参有两种方式#{}和${} 一般来说,我们通常使用的是#{},这里采用的是预编译机制,防止SQL注入,将#{}中的参数转义成字符串,例如: 执行S ...

  9. 关于mybatis中#{}和${}区别的解析

    #{} 使用#{}的时候,会先生成一句sql语句 如:其中id=1: select * from emp where id=#{id}; 会先生成一句 select * from emp where ...

最新文章

  1. 【FCS NOI2018】福建省冬摸鱼笔记 day4
  2. 解决使用个推后背景音乐音量变小问题
  3. strongswan技术
  4. 电脑连接到网络显示未连接到服务器未响应,电脑dns服务器未响应怎么办?
  5. 【Git】切换分支,以及git stash的使用
  6. 如何处理resource not found for the segment XXXXX error message
  7. 信息学奥赛一本通 2039:【例5.6】冒泡排序
  8. 学习笔记(2):uni-app实战社区交友类app开发-引入css动画库
  9. sci写作sci写作模板_有写作错误吗? bibisco简介
  10. 相乘的c语言,c语言矩阵相乘
  11. mysql 用户管理_mysql 用户管理及数据权限问题总结
  12. linux 通知线程退出,[Linux线程]多线程的阻塞和退出
  13. mac osx 系统 brew install hadoop 安装指南
  14. 正交矩阵、正规矩阵和酉矩阵
  15. jsp实现文件的上传
  16. 【jmeter】JMeter日志查看与日志分析
  17. eversync safari_Eversync:书签同步插件
  18. 大专毕业,0基础转行C++程序员一个月后,我后悔了
  19. px、rem、em的区别与联系
  20. Flutter开发(1)—— Dart vs Swift

热门文章

  1. JavaWeb课程设计——图书管理系统
  2. 记录神舟笔记本ssd+Hdd硬盘,安装双系统经历
  3. Eye candy 华而不实
  4. 项目团队如何有效沟通?
  5. 今天是最后一天上班了,写个2021的年终总结吧
  6. isc-dhcp 自定义option 配置, option 43, option 60
  7. 现代民机“飞行管理系统(FMS)”的功能和组成
  8. AI创作——disco diffusion入门使用
  9. 计算机高中期末总结作文,高一期末考试总结作文600字(通用5篇)
  10. API的应用场景设计和实现