mybatis # 和$ 获取接收参数值的区别
Mybatis 执行 入口是 DefaultSqlSession.selectOne()方法,可以通过debut这个方法,去查看这个原理。Mybaitis 封装了JDBC ,执行时会将我们注解(@Select) 或 Mapper 中的 Sql 和参数进行处理,并交给 PreparedStatement 来执行。
比如Mybatis 的sql语句如下:
SELECT * FROM ${table_name} WHERE name = #{name} AND password = #{password}
通过方法调用传入值
classDao.selectEntityByTableNameAndId("tb_student", "austin","123456");
被处理后的sq预处理语句变成
SELECT * FROM tb_student WHERE name = ? AND password = ?
可以发现,后面由#号接受值得方式变成了“?”号占位符,后面通过PreparedStatement.setString 去分别设置占位符对应得值。
而$ 符号直接,把传入参数对应得值,填充到了sql语句了,这样显然容易导致sql注入。
所以总结如下:
都可以作为接受参数值的方式
但是$由于没有经过预处理语句处理,容易导致sql注入问题
如果非要使用$,除非传入的值不是由用户提交的,而是由服务器端提供的,如果非要前端提供,而且坚持要用$,可以这么做
比如前端用下拉框,后端通过获取下拉框的值(比如0,1,3)进行判断,从而从后台找到对应的字符串,这样就能做到既使用$,又防止sql注入问题。
综上所述,貌似实在找不到用$的任何优点。所以一般能用#的就别用$,尽量的使用#方式。
mybatis # 和$ 获取接收参数值的区别相关推荐
- jmeter根据循环获取参数_jmeter forEach循环获取response参数值进行接口请求
jmeter forEach循环获取response参数值进行接口请求 注意: 一,ForEach控制器 输入变量前缀:输入正则表达式变量的引用名称即可 Start index for loop(ex ...
- echo和pwd获取文件路径的区别对比
echo和pwd获取文件路径的区别对比 echo &xxxx 直接可获取存储文件路径 pwd 也可以获取文件存储路径,但需cd 到相应的路径,在路径下,才可以通过pwd指令获取路径. 说明:二 ...
- 如何获取大端中的数据_【软件】ProE中各种获取数据方式的区别
更多精彩,请点击上方蓝字关注我们! 软件 ProE中各种获取数据方式的区别 输入特征:输入特征是通过数据共享功能从外部文件输入几何的,文件输入以后,会转换成proe软件能够识别的几何,称为一个特征发布 ...
- js获取 url 参数值的方法总结
今天小编碰到一个朋友问这么一个问题,怎么在一个页面中获取另外一个页面url传过来的参数呢?最初一开始很本能的想到了用 split("?"),这样一步步的分解出需要的参数.但是想了一 ...
- mybatis中association 和collection 的区别
mybatis中association 和collection 的区别:https://zhidao.baidu.com/question/1240407172484106299.html 两个实体类 ...
- MyBatis insert 获取自增主键
1.建表语句 create table user( id int PRIMARY KEY auto_increment, name varchar(400) ); 2.Maven 依赖 <pro ...
- Mybatis selectKey获取自增ID(DB2/Sybase/MySQL/Oracle/达梦)
Mybatis selectKey获取自增ID(DB2/Sybase/MySQL/Oracle/达梦) 1.selectKey 2.不同数据库写法 2.1 DB2 2.2.Sybase 2.3 MyS ...
- 【MyBatis】resultMap和resultType的区别
mybatis中resultMap和resultType的区别 mybatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap.resultType是 ...
- js获取url参数值的方法总结(亲测)
1.方式一:通过字符串截取的方式获取参数值: 1).函数一:获取URL中的参数名及参数值的集合 /*** [获取URL中的参数名及参数值的集合]* 示例URL:http://htmlJsTest/ge ...
最新文章
- EhLib控件在windows 2003 中delphi 安装问题解决办法
- 【EventBus】事件通信框架 ( 订阅方法注册 | 检查订阅方法缓存 | 反射获取订阅类中的订阅方法 )
- HNUSTOJ-1257 You are my brother
- Linux 压缩和解压命令
- 使用WebRTC实现电脑与手机通过浏览器进行视频通话
- 基于theano的keras安装
- UIKeyboard键盘相关知识点
- 第一百一十八天 how can I 坚持
- 编译原理教程_8 静态语义分析和中间代码生成
- java.util.stream.DoubleStream
- thinkphp 3.+ Apache url重写问题(.htaccess)
- L2-004. 这是二叉搜索树吗?
- xp系统如可用计算机截图,WinXP系统电脑怎么截图 常见截图方法介绍
- 人人开源代码生成器启报错
- UE4 人物运动基本设置
- 负载均衡与分布式网络存储技术简介
- 在阿里云服务器上安装常用应用
- P68是什么意思 IP67和IP68等级有什么区别
- 【DCANet2022】DCANet: Differential Convolution Attention Network for RGB-D Semantic Segmentation
- HDU 6578 Blank 区间dp
热门文章
- postgreSQL源码分析——索引的建立与使用——各种索引类型的管理和操作(1)
- oracle decode别名,Oracle中decode函数用法 VelHong
- crt安装mysql安装包_Linux安装MySQL步骤
- 计算机通信与专业英语翻译,电子信息与通信工程专业英语王立琦版课文翻译
- arp协议属于哪一层_网络工程师(3):详解ARP协议
- 虚拟化文件服务器,vmware服务器虚拟化项目实施文档(1)
- java在线学习系统源码_java学习成长之路(基础,源码,项目,实战)
- java中子类怎样调用父类的属性_java的继承、重载(overload)、覆盖(override)的总结...
- 用户注册PHP,PHP制作用户注册系统,php制作用户注册_PHP教程
- char添加一个字符_LINUX字符设备驱动模型分析(起始篇)