浅谈mybatis中的#和$的区别

发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递

MyBatis 基于Java的持久层框架MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。

下面小编就为大家带来一篇浅谈mybatis中的#和$的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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中的#和$的区别全部内容了,希望大家多多支持phperz~

相关阅读:

浅谈mybatis中的#和$的区别

Mybatis中的resultType和resultMap查询操作实例详解

mybatis中的setting配置详解

深入学习MyBatis中的参数(推荐)

深入理解MyBatis中的一级缓存与二级缓存

mybatis中的缓存问题解析

Mybatis中的延迟加载案例解析

Mybatis中的高级映射一对一、一对多、多对多

MyBatis中的resultMap简要概述

Mybatis中@Param的用法和作用详解

MyBatis中多对多关系的映射和查询

Mybatis与Ibatis的区别

mybatis与php,浅谈mybatis中的#和$的区别相关推荐

  1. boolean mybatis_浅谈mybatis中SQL语句给boolean类型赋值问题

    我就废话不多说了,大家还是直接看代码吧~ SELECT m.menu_id , m.parent_id , m.`name` , 1 opens FROM menu m WHERE m.is_vali ...

  2. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  3. 浅谈CSS3中display属性的Flex布局,关于登陆页面属性框的设置

    声明:本文转发自三里屯柯南的浅谈CSS3中display属性的Flex布局http://www.cnblogs.com/xuyuntao/articles/6391728.html 基本概念 采用Fl ...

  4. python sys模块作用_浅谈Python中的模块

    模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Mod ...

  5. python生成器和迭代器作用_浅谈Python中的生成器和迭代器

    迭代器 迭代器协议 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么返回一个异常来终止本次迭代.(只能往前走,不能往后退!) 迭代器对象 遵循了(实现了)迭代器协议的对象.(对象内 ...

  6. oracle hash join outer,CSS_浅谈Oracle中的三种Join方法,基本概念 Nested loop join: Outer - phpStudy...

    浅谈Oracle中的三种Join方法 基本概念 Nested loop join: Outer table中的每一行与inner table中的相应记录join,类似一个嵌套的循环. Sort mer ...

  7. 浅谈caffe中train_val.prototxt和deploy.prototxt文件的区别

    浅谈caffe中train_val.prototxt和deploy.prototxt文件的区别 标签: caffe深度学习CaffeNet 2016-11-02 16:10 1203人阅读 评论(1) ...

  8. python中 是什么类型_浅谈python中的变量默认是什么类型

    浅谈python中的变量默认是什么类型 1.type(变量名),输出的结果就是变量的类型: 例如 >>> type(6) 2.在Python里面变量在声明时,不需要指定变量的类型,变 ...

  9. 浅谈Java中的Set、List、Map的区别

    就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...

最新文章

  1. 解决新配置虚拟主机不生效的问题
  2. 数据埋点方案和规范确定
  3. php显示服务器拒绝连接失败,php – SMTP ERROR:无法连接到服务器:连接被Office365拒绝(111)...
  4. java 当一个文本框有值时另一个文本框置灰_【农行DevOps进行时】基于PaaS的持续集成/持续交付实践 | IDCF...
  5. wrapper包装java_java Object 类 与 Wrapper包装类
  6. java 三个点_Java,参数中的3个点
  7. C语言:一个五位数,判断其是否为回文数
  8. STC8PROG - Linux下的 STC8G STC8H 烧录工具
  9. openjdk1.8的下载与安装
  10. 关于ttyS与ttySAC
  11. 【论文泛读95】一石二鸟:窃取模型并从基于BERT的API推断属性
  12. 一道积分不等式的证明
  13. 彻底解决文件路径问题
  14. webdav使用mysql_WebDAV Client
  15. 【知识产权基础之专利权】第一章 专利权的客体
  16. java aop面试_我想知道Spring在面试中应该怎么介绍,以及如何介绍他的aop?
  17. Revert R12.1.3 Homepage Layout to Link Style as in R12.1.1 or 11i
  18. JAVA 生成同音字的方法,随机生成汉字,汉字转拼音,写的不好,望指正.谢谢~
  19. android智能电视使用方法,安卓系统智能电视使用方法
  20. 健身增肌补剂有什么?

热门文章

  1. TVM Operator Inventory (TOPI)简介
  2. 科技公司合作伙伴清单
  3. 在Relay中注册新TVM算子
  4. 超轻量AI引擎MindSpore Lite
  5. CPU的自动调度矩阵乘法
  6. MLIR多级中间表示概述
  7. Caffe框架GPU与MLU计算结果不一致请问如何调试?
  8. ZooKeeper简介和概念知识
  9. A 'return' expression required in a function with a block body ('{...}')
  10. 利用 jquery 获取某个元素下的所有图片并改变其属性