Mybatis之占位符与拼接符
1.占位符
1.1 含义:
在持久化框架中,为了将约束条件中的可变参数从sql中分离出来,在原有的参数位置使用特殊的标记来标记该位置,后期通过代码给sql传递参数(即实现sql与代码分离开)。这个特殊的标记被称为占位符。
1.2 优点:
1.2.1 防止sql注入,提高了安全性
1.2.2 对于只有参数不同的sql语句,只需要编译一次{以后会从缓存中获取}
1.3 形式:
占位符在持久化框架中的一般形式为:?。Mybatis为了更加方便的与参数列表进行映射,采用的形式为:#{参数名}
1.4 示例:
SELECT * FROM t_address t where t.id = #{id} --等价于 SELECT * FROM t_address t where t.id = ?
1.5 注意:
占位符只能在约束条件中使用
--持久化框架中,不允许以下形式: SELECT * FROM ? SELECT * FROM t_address order by ? --mybatis中,不允许以下形式 SELECT * FROM #{tableName} SELECT * FROM t_address order by #{orderBy}
2. 拼接符
2.1 背景:
由于占位符只能在sql语句的约束条件中使用,有时候sql语句需要其它的一些变量参数(非约束条件中)来控制,如:表名、排列顺序等。所以Mybatis使用了拼接符的概念
2.2 形式:${参数名}
2.3 示例:
SELECT * FROM ${tableName}
2.4 注意:
如果参数通过用户获取,则不能使用拼接符的形式【会发生sql注入,不安全】
3. 补充:
在进行预编译的时候,会用参数值直接替换${参数名},用?替换#{参数名}
4. sql注入
4.1 概念:
将sql语法里的一些组合,通过表单提交或页面请求注入到sql语句中,欺骗服务器执行恶意sql语句
4.2 示例:
String id = “1 or 1 = 1”; String sql = “select * from t_address where id = ”+id;
4.2 防止sql注入的方法:
对于表单提交的数据,使用占位符的形式构建sql语句(占位符不识别参数的sql语法【作为普通字符串】)
String id = “1 or 1 = 1” String sql = “select * from t_address where id = ?”//解析后: select * from t_address where id = ‘1 or 1 = 1’;
转载于:https://www.cnblogs.com/BlueStarWei/p/9385320.html
Mybatis之占位符与拼接符相关推荐
- 7 MyBatis映射文件中的拼接符
7.1 占位符: 占位符的值插入到SQL中时,会自动以单引号包裹内容. 格式: #{拼接符名} 7.2 拼接符: 拼接负责的值插入到SQL中时,只是作为命令的拼接,不做其他处理 格式: ${拼接符名} ...
- 【Mybatis】占位符#{}和${}的区别
#{}是占位符,${}是拼接符. #{}将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为ord ...
- 【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )
文章目录 一.逐行遍历文件文本数据 1.获取文件中的文本行 2.查询文本行数据 3.追加文件数据 4.使用占位符方式拼接字符串 二.完整代码示例 一.逐行遍历文件文本数据 1.获取文件中的文本行 调用 ...
- MyBatis -- 参数占位符 #{} 和 ${}
MyBatis -- 参数占位符 #{} 和 ${} 一.准备工作 二.参数占位符 #{} 和 ${} 三.特殊场景 3.1 特殊场景 1 -- String 3.1.1 使用 #{} 3.1.2 使 ...
- MyBatis——谈谈占位符(#、$)的理解与使用
文章目录: 1.#占位符 1.1 #占位符的特点 1.2 使用 #{ } 对数据库执行 update 操作 2.$占位符 2.1 $占位符的特点 2.2 使用 ${ } 对数据库执行 select 操 ...
- 批量删除-获取页面id-字符串拼接做法
批量删除-获取页面id-字符串拼接做法 做法思路 首先来说说思路,肯定是先在前端页面获取选中的复选框的数组,这是第一步,然后这里我想的是将数组直接拼接成字符串,将字符串传值给我后台已经做好的单个删除的 ...
- html取消转义符,HTML转义符
.NET 基础 一步步 一幕幕[运算符.占位符.转义符] 运算符.占位符.转义符 好吧,在五局全胜之后,终于升到了三个钻,距离一个星星还有一大段距离,忽然想起来今天的博客还没写,果断坑队友,来写博客了 ...
- 乾坤符和鸿蒙符,少年三国志四种暗金兵符技能怎么样 四种暗金兵符技能分析...
兵符系统中不同颜色的兵符给角色助阵的属性值都不相同,红色兵符.金色兵符.暗金兵符,今天我们就来看一下几种暗金兵符的技能都是怎样的吧. [鸿蒙符] 鸿蒙符的混沌破势技能,使得佩戴的武将能在一定条件下驱散 ...
- 32 usb 配置描述符_USB协议详解第4讲(USB描述符标准配置描述符)
关注+星标公众号,不错过精彩内容 编排 | 一个早起的程序员 一个早起的程序员 1 USB描述符USB描述符有设备描述符.标准配置描述符.接口描述符.端点描述符.字符串描述符,HID设备有HID描述符 ...
最新文章
- mysql使用参数指定用户_mysql-用户账号及权限管理
- 安卓APP_ Fragment(2)—— Activity与Fragment的通信
- Mysql学习总结(6)——MySql之ALTER命令用法详细解读
- 【java读书笔记】——java开篇宏观把控 + HelloWorld
- iOS之中国银联移动支付控件升级的问题
- 110道 Redis面试题及答案 (持续更新)
- 码农的奋斗之路 富爸爸穷爸爸系列--提高你的财商 读后感
- 网页形式的php抓取文件,PHP 抓取网页源文件
- 八戒帮扶V5微信公众平台任务系统完美运营v1.5.8
- 苹果app旧版本软件下载
- ZOJ 3789 Gears
- 360email讲堂:中秋佳节邮件营销大放光彩
- 工银亚洲银联卡到手!
- IEEE trans模板格式中的分栏及左下角作者信息脚注的添加方法(Word 2010)
- Java 8 流过滤List
- uva 714 Copying Books(二分法求最大值最小化)
- [附源码]计算机毕业设计Python作业查重系统(程序+源码+LW文档)
- CUDA编程——cudaHostAlloc
- 虹科方案 | 视频和广播专业人士的存储和存档解决方案
- mysql 同步设置密码_mySQL数据同步设置
热门文章
- Codeforces 1480B. The Great Hero(阅读模拟题,注意数据范围和攻击顺序)
- php mysql 安装错误_Apache+php配置 Mysql安装出错解决办法
- 解释afterPropertiesSet
- 搜索插入位置—leetcode35
- obfuscator-llvm Theos 集成配置
- 禁止Dockpanel拖动
- 数据结构之:链表详解
- 锐捷服务器虚拟化技术_数据中心边缘虚拟交换(IEEE 802.1Qbg)技术白皮书
- mongodb 搜索速度_初识 MongoDB 数据库
- Spring Web Service 学习之Hello World篇