mybatis #{}和${}的区别
他们之间的区别用最直接的话来说就是:#相当于对数据 加上 双引号,$相当于直接显示数据。
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 #{}和${}的区别相关推荐
- Mybatis 和 Mybatis Plus 的区别
Mybatis Plus Mybatis-Plus是一个Mybatis的增强工具,只是在Mybatis的基础上做了增强却不做改变,MyBatis-Plus支持所有Mybatis原生的特性,所以引入My ...
- Mybatis 和 Mybatis Plus 的区别 2020.09.07
Mybatis Plus Mybatis-Plus是一个Mybatis的增强工具,只是在Mybatis的基础上做了增强却不做改变,MyBatis-Plus支持所有Mybatis原生的特性,所以引入My ...
- 什么是Mybatis,为什么要学习Mybatis,mybatis与hibernate区别
文章目录 为什么要学习mybatis jdbc编程步骤: jdbc的原始方法(未经封装)实现查询数据库表记录 jdbc问题总结: Mybatis解决jdbc编程的问题 Mybatis是什么 Mybat ...
- mybatis$和#的区别
select * from everstar.Questions where ProductType = 'productType' select * from everstar.Questions ...
- Mybatis和Hibernate区别
第一章 Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀 ...
- mybatis与ibatis区别
共同点: 1.都封装了大多数的JDBC样板代码(动态的拼接sql),使得开发者只需要关注sql本身,而无需耗费时间去创建驱动,创建连接.关闭连接: 不同点: 1.ibatis习惯把全局配置文件命名为s ...
- Mybatis和JDBC区别
今天面试中问了这个问题,当时答的不好,现在整理一下. JDBC是Java提供的一个操作数据库的API: MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...
- mybatis中#和$区别
在Mybtis中的Mapper映射文件中,sql语句传参有两种方式#{}和${} 一般来说,我们通常使用的是#{},这里采用的是预编译机制,防止SQL注入,将#{}中的参数转义成字符串,例如: 执行S ...
- 关于mybatis中#{}和${}区别的解析
#{} 使用#{}的时候,会先生成一句sql语句 如:其中id=1: select * from emp where id=#{id}; 会先生成一句 select * from emp where ...
最新文章
- 【FCS NOI2018】福建省冬摸鱼笔记 day4
- 解决使用个推后背景音乐音量变小问题
- strongswan技术
- 电脑连接到网络显示未连接到服务器未响应,电脑dns服务器未响应怎么办?
- 【Git】切换分支,以及git stash的使用
- 如何处理resource not found for the segment XXXXX error message
- 信息学奥赛一本通 2039:【例5.6】冒泡排序
- 学习笔记(2):uni-app实战社区交友类app开发-引入css动画库
- sci写作sci写作模板_有写作错误吗? bibisco简介
- 相乘的c语言,c语言矩阵相乘
- mysql 用户管理_mysql 用户管理及数据权限问题总结
- linux 通知线程退出,[Linux线程]多线程的阻塞和退出
- mac osx 系统 brew install hadoop 安装指南
- 正交矩阵、正规矩阵和酉矩阵
- jsp实现文件的上传
- 【jmeter】JMeter日志查看与日志分析
- eversync safari_Eversync:书签同步插件
- 大专毕业,0基础转行C++程序员一个月后,我后悔了
- px、rem、em的区别与联系
- Flutter开发(1)—— Dart vs Swift