mybatis中的#和$的区别

转载 2015年11月19日 10:55:53
1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".


2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id,  如果传入的值是id,则解析成的sql为order by id.


3. #方式能够很大程度防止sql注入。


4.$方式无法防止Sql注入。


5.$方式一般用于传入数据库对象,例如传入表名.


6.一般能用#的就别用$.


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


字符串替换

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

ORDER BY ${columnName}

这里MyBatis不会修改或转义字符串。

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

Mybatis中#和$的区别

Mybatis中$和#的区别
  • u013399093
  • u013399093
  • 2017年01月05日 17:06
  • 2155

MyBatis 中#与$的区别

今天在工作中有个点击排序的功能调试了许久,终寻因,总结之。   需求是这样的,页面有个table,有一列的上下箭头可点击并排序。对于这种需求,我的mybatis.xml的sql配置写成了如下:  ...
  • u011519624
  • u011519624
  • 2017年01月22日 23:42
  • 4037

《深入理解mybatis原理(十二)》 mybatis深入理解之#与$区别

一、介绍       mybatis 中使用 Mapper.xml里面的配置进行 sql 查询,经常需要动态传递参数,例如我们需要根据用户的姓名来筛选用户时,sql 如下: sel...
  • pfnie
  • pfnie
  • 2016年11月19日 16:00
  • 11275

mybatis中的#{}和${}区别

1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的...
  • u013552450
  • u013552450
  • 2017年05月19日 13:59
  • 8556

mybatis中的#号和$号的区别

之前做项目时,由于自己对之前学过的,用过的知识都没有去总结,时间一久,就会忘记,而当出现问题时,往往需要很长时间才能找到问题原因,从而浪费了大量时间在定位上,言归正传,现在说说之前遇到的一个问题。 ...
  • leo_ace
  • leo_ace
  • 2017年05月31日 23:06
  • 974

面试之mybatis和hibernate的区别

从根本点出发讨论mybatis和hibernate的区别:mybatis自己写sql,hibernate自动生成sql。...
  • tanjun592
  • tanjun592
  • 2016年12月04日 19:21
  • 2443

【持久化框架】Mybatis与Hibernate的详细对比

这篇博文我们重点分析一下Mybatis与Hibernate的区别
  • jiuqiyuliang
  • jiuqiyuliang
  • 2015年05月01日 14:20
  • 75571

mybatis相对于ibatis的优势

2010年,apache的Ibatis框架停止更新,并移交给了google团队,同时更名为MyBatis。从2010年后Ibatis在没更新过,彻底变成了一个孤儿框架。一个没人维护的框架注定被myba...
  • bruce128
  • bruce128
  • 2017年05月14日 00:12
  • 1493

MyBatis中#号与美元符号的区别

MyBatis中#号与美元符号的区别 #{变量名}可以进行预编译、类型匹配等操作,#{变量名}会转化为jdbc的类型。 select * from tablename where id = #...
  • java1993666
  • java1993666
  • 2017年01月12日 13:18
  • 1824

HIbernate和Mybatis的区别和优劣势

第一章     Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分。 Mybatis 是另外一种优...
  • qwer_bbb
  • qwer_bbb
  • 2017年06月21日 11:24
  • 600
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mybatis中的#和$的区别
举报原因:
原因补充:

(最多只允许输入30个字)