开发者社区> java牛> 正文

mybatis中的#和$的区别

简介: 将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".    $将传入的数据直接显示生成在sql中。
+关注继续查看
  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注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。

转自:http://weijun726.blog.163.com/blog/static/87342299201362652950398/

若转载请注明出处!若有疑问,请回复交流!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Mybatis中的#与$的区别
Mybatis中的#与$的区别
24 0
Mybatis和hibernate到底有什么异同?
本文在这里给大家科普一下 MyBatis 和 Hibernate,看它们有哪些异同。
11 0
MyBatis 学习笔记(二)MyBatis常用特性运用
接上一篇MyBatis 学习笔记(一)MyBatis的简介与使用以及与其他ORM框架的比较,今天我们接着来学习MyBatis的一些常用特性,包括别名,类型处理器,动态SQL
28 0
mybatis与hibernate区别
mybatis与hibernate区别
50 0
mybatis中的#{}和${}的区别
mybatis中的#{}和${}的区别
34 0
【MyBatis】mybatis中#{}与${}的区别
在学习 **mybatis** 框架的过程中,我们都知道动态 **sql** 是 **mybatis** 的主要特性之一,在 **mapper** 中定义的参数传到 **xml** 中之后,在查询之前 **mybatis** 会对其进行动态解析。**mybatis** 为我们提供了两种支持动态 **sql** 的语法:`#{}` 以及 `${}`。那么它们之间的区别是什么呢?
37 0
MyBatis是什么?使用方式?
其他知识:Java EE三层架构:表现层、业务层、持久层
51 0
MyBatis的相关配置、MyBatis与hibernate的区别
1.1 mybatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。 mybatis是一个基于Java的持久层框架(半自动),主要包括SQL Maps和Data Access Objects(DAO) ORM:Object Relational Mapping (对象与关系型数据库之间的映射管理框架) 1.2 MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的
45 0
Mybatis中${}和#{}的区别
Mybatis中${}和#{}的区别
123 0
【MyBatis】 MyBatis与MyBatis-Plus的区别
【MyBatis】 MyBatis与MyBatis-Plus的区别
495 0
+关注
java牛
善于分享,乐于分享
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题)
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载