当前位置: 首页 > news >正文

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注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。

转载于:https://www.cnblogs.com/deepbreath/p/4723754.html

相关文章:

  • 【javascript】用javascript实现的一朵从含苞到绽放的玫瑰
  • 【数据结构】递归求解迷宫问题
  • Java Statement和PreparedStatement性能测试(转)
  • AJAX - 向服务器发送请求
  • PowerShell-第3章 变量与对象
  • JSON
  • 【数据结构】非循环队列
  • 【JavaScript】encodeURI() 函数
  • 【JavaScript】 encodeURI() 函数
  • 关系型数据库跟费关系型数据库区别
  • 使用json往返传输数据 post方法
  • ubuntu下没有中文输入法的解决办法!
  • 【jQuery 遍历】 - map() 方法
  • HTML中的Meta http-equiv属性详解(转)
  • 【jQuery 】参考手册 - 遍历
  • [case10]使用RSQL实现端到端的动态查询
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • C++入门教程(10):for 语句
  • HTML中设置input等文本框为不可操作
  • MySQL用户中的%到底包不包括localhost?
  • nfs客户端进程变D,延伸linux的lock
  • Redis学习笔记 - pipline(流水线、管道)
  • WePY 在小程序性能调优上做出的探究
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 找一份好的前端工作,起点很重要
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ​Linux·i2c驱动架构​
  • # 飞书APP集成平台-数字化落地
  • (C)一些题4
  • (定时器/计数器)中断系统(详解与使用)
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (翻译)terry crowley: 写给程序员
  • (论文阅读30/100)Convolutional Pose Machines
  • (三)uboot源码分析
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (转)setTimeout 和 setInterval 的区别
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET 5种线程安全集合
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • @property括号内属性讲解
  • @vue/cli 3.x+引入jQuery
  • [].slice.call()将类数组转化为真正的数组
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [AR]Vumark(下一代条形码)
  • [Ariticle] 厚黑之道 一 小狐狸听故事
  • [C++核心编程](四):类和对象——封装
  • [codeforces]Recover the String
  • [CTO札记]盛大文学公司名称对联