#{}
使用#{}的时候,会先生成一句sql语句
如:其中id=1;
select * from emp where id=#{id};
会先生成一句
select * from emp where id=?(预编译)
然后再把1替换进去
select * from emp where id=‘1’;(中的id为字符串)
尽管我们数据库中的id定义为int类型,数据库会帮我们自动转换。就像我们java中String中存的是是数字可以强转为integer


然后就存进去数据库了。
${}

使用 $ {}的时候是直接进行sql拼接
如:id=1;
select * from emp where id=${id};
select * from emp where id=1;
其中的1是没有’ ’

在大部分的文章当中都有说#{}不会有sql注入的问题,而${}会有sql注入的问题,那么接下来将解释一下
因为我们的#{}注入的数据是带有’'所以如下情况下
String sql=”1; drop table emp;“;

使用#{}
select * from emp where id=#{id}的时候
select * from emp where id=’ 1;drop table emp;’;
这样数据库会查询出对应的记录,并发出一条警告并不会删除emp表

但是当我们使用 $ {}的时候就会出现一下这这种情况
select * from emp where id=${id}的时候
select * from emp where id='1;drop table emp;
数据库会执行两条sql语句这样就会造成 emp表被恶意删除。这就是sql注入的问题。

谢谢大家,有问题希望大家指出

关于mybatis中#{}和${}区别的解析相关推荐

  1. MyBatis中foreach元素用法解析

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/70946761冷血之心的博客)          动态SQL是MyB ...

  2. mybatis中#和$区别

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

  3. mybatis与php,浅谈mybatis中的#和$的区别

    浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...

  4. mybatis对mapper.xml的解析(三)

    mybatis中对语句的解析使用了组合模式,针对不同的sql结点处理抽象出了SqlNode.详细的设计图为 什么时候创建不同的SqlSource? 创建DynamicSqlSource情况: 在包含有 ...

  5. MyBatis中#{}和${}的区别

    ------------------------siwuxie095 MyBatis 中 #{} 和 ${} 的区别 1.在 MyBatis 的映射配置文件中,动态传递参数有两种方式: (1)#{} ...

  6. Mybatis 中$与#的区别

    1 #是将传入的值当做字符串的形式,eg:select id,name,age from student where id =#{id},当前端把id值1,传入到后台的时候,就相当于 select i ...

  7. mybatis中的resultMap与resultType、parameterMap与 parameterType的区别

    Map:映射:Type:Java类型 resultMap 与 resultType.parameterMap 与  parameterType的区别在面试的时候被问到的几率非常高,项目中出现了一个小b ...

  8. mybatis 中#与$的区别

    2019独角兽企业重金招聘Python工程师标准>>> MyBatis中#和$的区别 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #u ...

  9. 从印度兵力分布聊聊Mybatis中#和$的区别

    文章目录 简介 举个例子 查询举例 #{id}的特点 ${id}的特点 总结 简介 大家在使用Mybatis的过程中可能都会自己去写SQL语句,并且需要向SQL语句传入参数. 但是在Mybatis中, ...

最新文章

  1. auot lisp 选择集处理_第64集 python机器学习:用预处理进行参数选择
  2. html 内嵌xml数据库,在SQLite数据库中存储XML/HTML文件 - 可能吗?
  3. 洛谷 - P4001 [ICPC-Beijing 2006]狼抓兔子(网格图最大流转换为对偶图最短路)
  4. Laravel 将数据表中的数据导出,并生成seed文件
  5. 什么是CSS?你真的理解?
  6. java学习(25):三目运算符
  7. xirihanlin音乐盒 vol.1
  8. 个人收藏的一些资料(一)Installshield制作友好的更新
  9. 拿到200万offer的钟钊带领团队将AutoML算法商用
  10. centos服务器安装python3,CentOS7 服务器上如何安装python3
  11. 操作系统--虚拟内存、逻辑地址、线性地址、物理地址
  12. 云课堂智慧职教计算机基础答案,云课堂智慧职教题库答案护理系内科,智慧职教职业生涯规划答案,智慧职教mooc学院计算机文化基础答案...
  13. 创建简单vue项目 / Webpack创建vue项目
  14. 各大网络安全厂商及安全产品
  15. 配置caffe matlab 中遇到的坑
  16. PS怎么做出旧电视图像故障视觉特效
  17. 夜天之书 #49 开源软件的技术写作
  18. html css3不拉伸图片显示效果,类似淘宝的
  19. PCB应力应变测试分析结合IPC-9702和IPC-9704A标准
  20. 应用市场建站系统 171cms app下载站源码

热门文章

  1. 江苏师范大学计算机学硕调剂,考研最容易调剂的大学_2016江苏师范大学考研调剂信息已公布...
  2. WORD转换成PDF转换器2015官方版?
  3. linux上wds部署服务,Windows Server 2016部署WDS服务图文详解
  4. CSS让一个元素水平垂直居中,到底有多少种方案?
  5. 曲线斜率与法向量综合辨析
  6. vite2.0+vue3移动端项目实战
  7. 操作系统-程序计数器
  8. curl 发送请求的几种示例
  9. 微波滤波器——Richard变换及Kuroda恒等变换(三)
  10. echarts简单使用、echarts通过计时器进行动态更新数据、echarts连接数据库实时更新数据