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和ibatis的区别

  • 2012年12月19日 15:25
  • 4KB
  • 下载

MyBatis排序时使用order by 动态参数时需要注意,用$而不是#, #{}和${}的区别以及order by注入问题

ORDER BY ${columnName} 这里MyBatis不会修改或转义字符串。 重要:接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会导致潜在的SQL注入攻击,因此你...

Mybatis中的resultType和resultMap 区别

Mybatis中的resultType和resultMap  是mybatis 中返回类型一定用到的,但不会同时出现。mybatis返回类型肯定是map结构,然后根据返回类型是map还是对象类型...

mybatis的#{}和${}的区别以及order by注入问题(转录)

原文链接:http://www.cnblogs.com/chyu/p/4389701.html 前言略,直奔主题.. #{}相当于jdbc中的preparedstatement...
  • rigous
  • rigous
  • 2017年06月29日 17:10
  • 216

iBatis 2.x 和 MyBatis 3.0.x 的区别

简介:  本文主要讲述了 iBatis 2.x 和 MyBatis 3.0.x 的区别,以及从 iBatis 向 MyBatis 移植时需要注意的地方。 通过对本文的学习,读者...
  • winy_lm
  • winy_lm
  • 2015年12月30日 14:11
  • 262

ORM框架--------Hibernate、Mybatis与Spring JPA-Data之间的区别

1.概念: Hibernate :Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。着力...

909422229_Hibernate与Mybatis区别介绍

一:Hibernate 简介 Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/RMapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行。程序员往...

SSH(Struts,Spring,Hibernate)和SSM(SpringMVC,Spring,MyBatis)的区别(详解)

目录(?)[-] SSH 和 SSM 的定义 SSH 和 SSM 的实现原理区别 Struts2 和 SpringMVC 在 webxml 中配置的不同 Struts2 和 SpringMVC...

hibernate与没有Mybatis的区别

我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和...

hibernate 与 mybatis 的区别

面试被问到了这个,在这里总结一下 二者区别从以下几个方面来进行对比阐述 一  开发速度   hibernate掌握起来要难于mybatis,但是mybatis易上手同时也比较简陋。 开发速度要...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mybatis中的#和$的区别
举报原因:
原因补充:

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