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 # 和$ 获取接收参数值的区别相关推荐

  1. jmeter根据循环获取参数_jmeter forEach循环获取response参数值进行接口请求

    jmeter forEach循环获取response参数值进行接口请求 注意: 一,ForEach控制器 输入变量前缀:输入正则表达式变量的引用名称即可 Start index for loop(ex ...

  2. echo和pwd获取文件路径的区别对比

    echo和pwd获取文件路径的区别对比 echo &xxxx 直接可获取存储文件路径 pwd 也可以获取文件存储路径,但需cd 到相应的路径,在路径下,才可以通过pwd指令获取路径. 说明:二 ...

  3. 如何获取大端中的数据_【软件】ProE中各种获取数据方式的区别

    更多精彩,请点击上方蓝字关注我们! 软件 ProE中各种获取数据方式的区别 输入特征:输入特征是通过数据共享功能从外部文件输入几何的,文件输入以后,会转换成proe软件能够识别的几何,称为一个特征发布 ...

  4. js获取 url 参数值的方法总结

    今天小编碰到一个朋友问这么一个问题,怎么在一个页面中获取另外一个页面url传过来的参数呢?最初一开始很本能的想到了用 split("?"),这样一步步的分解出需要的参数.但是想了一 ...

  5. mybatis中association 和collection 的区别

    mybatis中association 和collection 的区别:https://zhidao.baidu.com/question/1240407172484106299.html 两个实体类 ...

  6. MyBatis insert 获取自增主键

    1.建表语句 create table user( id int PRIMARY KEY auto_increment, name varchar(400) ); 2.Maven 依赖 <pro ...

  7. 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 ...

  8. 【MyBatis】resultMap和resultType的区别

    mybatis中resultMap和resultType的区别 mybatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap.resultType是 ...

  9. js获取url参数值的方法总结(亲测)

    1.方式一:通过字符串截取的方式获取参数值: 1).函数一:获取URL中的参数名及参数值的集合 /*** [获取URL中的参数名及参数值的集合]* 示例URL:http://htmlJsTest/ge ...

最新文章

  1. EhLib控件在windows 2003 中delphi 安装问题解决办法
  2. 【EventBus】事件通信框架 ( 订阅方法注册 | 检查订阅方法缓存 | 反射获取订阅类中的订阅方法 )
  3. HNUSTOJ-1257 You are my brother
  4. Linux 压缩和解压命令
  5. 使用WebRTC实现电脑与手机通过浏览器进行视频通话
  6. 基于theano的keras安装
  7. UIKeyboard键盘相关知识点
  8. 第一百一十八天 how can I 坚持
  9. 编译原理教程_8 静态语义分析和中间代码生成
  10. java.util.stream.DoubleStream
  11. thinkphp 3.+ Apache url重写问题(.htaccess)
  12. L2-004. 这是二叉搜索树吗?
  13. xp系统如可用计算机截图,WinXP系统电脑怎么截图 常见截图方法介绍
  14. 人人开源代码生成器启报错
  15. UE4 人物运动基本设置
  16. 负载均衡与分布式网络存储技术简介
  17. 在阿里云服务器上安装常用应用
  18. P68是什么意思 IP67和IP68等级有什么区别
  19. 【DCANet2022】DCANet: Differential Convolution Attention Network for RGB-D Semantic Segmentation
  20. HDU 6578 Blank 区间dp

热门文章

  1. postgreSQL源码分析——索引的建立与使用——各种索引类型的管理和操作(1)
  2. oracle decode别名,Oracle中decode函数用法 VelHong
  3. crt安装mysql安装包_Linux安装MySQL步骤
  4. 计算机通信与专业英语翻译,电子信息与通信工程专业英语王立琦版课文翻译
  5. arp协议属于哪一层_网络工程师(3):详解ARP协议
  6. 虚拟化文件服务器,vmware服务器虚拟化项目实施文档(1)
  7. java在线学习系统源码_java学习成长之路(基础,源码,项目,实战)
  8. java中子类怎样调用父类的属性_java的继承、重载(overload)、覆盖(override)的总结...
  9. 用户注册PHP,PHP制作用户注册系统,php制作用户注册_PHP教程
  10. char添加一个字符_LINUX字符设备驱动模型分析(起始篇)