mybatis与php,浅谈mybatis中的#和$的区别
浅谈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中的#和$的区别相关推荐
- boolean mybatis_浅谈mybatis中SQL语句给boolean类型赋值问题
我就废话不多说了,大家还是直接看代码吧~ SELECT m.menu_id , m.parent_id , m.`name` , 1 opens FROM menu m WHERE m.is_vali ...
- java 中的单元测试_浅谈Java 中的单元测试
单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...
- 浅谈CSS3中display属性的Flex布局,关于登陆页面属性框的设置
声明:本文转发自三里屯柯南的浅谈CSS3中display属性的Flex布局http://www.cnblogs.com/xuyuntao/articles/6391728.html 基本概念 采用Fl ...
- python sys模块作用_浅谈Python中的模块
模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Mod ...
- python生成器和迭代器作用_浅谈Python中的生成器和迭代器
迭代器 迭代器协议 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么返回一个异常来终止本次迭代.(只能往前走,不能往后退!) 迭代器对象 遵循了(实现了)迭代器协议的对象.(对象内 ...
- oracle hash join outer,CSS_浅谈Oracle中的三种Join方法,基本概念
Nested loop join:
Outer - phpStudy...
浅谈Oracle中的三种Join方法 基本概念 Nested loop join: Outer table中的每一行与inner table中的相应记录join,类似一个嵌套的循环. Sort mer ...
- 浅谈caffe中train_val.prototxt和deploy.prototxt文件的区别
浅谈caffe中train_val.prototxt和deploy.prototxt文件的区别 标签: caffe深度学习CaffeNet 2016-11-02 16:10 1203人阅读 评论(1) ...
- python中 是什么类型_浅谈python中的变量默认是什么类型
浅谈python中的变量默认是什么类型 1.type(变量名),输出的结果就是变量的类型: 例如 >>> type(6) 2.在Python里面变量在声明时,不需要指定变量的类型,变 ...
- 浅谈Java中的Set、List、Map的区别
就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...
最新文章
- 解决新配置虚拟主机不生效的问题
- 数据埋点方案和规范确定
- php显示服务器拒绝连接失败,php – SMTP ERROR:无法连接到服务器:连接被Office365拒绝(111)...
- java 当一个文本框有值时另一个文本框置灰_【农行DevOps进行时】基于PaaS的持续集成/持续交付实践 | IDCF...
- wrapper包装java_java Object 类 与 Wrapper包装类
- java 三个点_Java,参数中的3个点
- C语言:一个五位数,判断其是否为回文数
- STC8PROG - Linux下的 STC8G STC8H 烧录工具
- openjdk1.8的下载与安装
- 关于ttyS与ttySAC
- 【论文泛读95】一石二鸟:窃取模型并从基于BERT的API推断属性
- 一道积分不等式的证明
- 彻底解决文件路径问题
- webdav使用mysql_WebDAV Client
- 【知识产权基础之专利权】第一章 专利权的客体
- java aop面试_我想知道Spring在面试中应该怎么介绍,以及如何介绍他的aop?
- Revert R12.1.3 Homepage Layout to Link Style as in R12.1.1 or 11i
- JAVA 生成同音字的方法,随机生成汉字,汉字转拼音,写的不好,望指正.谢谢~
- android智能电视使用方法,安卓系统智能电视使用方法
- 健身增肌补剂有什么?
热门文章
- TVM Operator Inventory (TOPI)简介
- 科技公司合作伙伴清单
- 在Relay中注册新TVM算子
- 超轻量AI引擎MindSpore Lite
- CPU的自动调度矩阵乘法
- MLIR多级中间表示概述
- Caffe框架GPU与MLU计算结果不一致请问如何调试?
- ZooKeeper简介和概念知识
- A 'return' expression required in a function with a block body ('{...}')
- 利用 jquery 获取某个元素下的所有图片并改变其属性