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

#{} 和 ${}区别

1、参数是Integer类型时候没区别(#是预编译SQL,$是即时SQL)

2、当参数是String类型时,就会出错了

(1)这是$的报错信息,因为我们的参数admin并没有加引号所以不满足字符串条件

(2)正确的SQL

(3)改正的办法(给${name}加上单引号)

3、#{} 和 ${} 的区别就是预编译SQL和即时SQL 的区别

4、SQL的执行流程

(1)解析语法,检验SQL有没有问题

(2)SQL优化,编译,制定执行计划

(3)执行SQL

5、

(1)#的SQL效率更高

(2)#的SQL更安全(防⽌SQL注⼊)

6、SQL注入

(1)' ' or 1='1'(这人就成了为空或者1等于1)此时这个代码就成恒成立的了,会把我们所有的数据都显示出来
(2)他可能会对我们的数据库进行更改或者删除操作(' ' ;drop table XX;--')'   '两个引号是一个语句,但是真正执行的时候后面的引号被我们注掉了,就成了两个执行语句,一个空,一个删除语句(这个问题现在已经被MyBatis解决掉了,被MyBatis拦截了)
(3)此时用List接受的话,就会把所有东西数据都返回出来
(4)并不是写了一定会有问题,可以用输入验证的方法来避免
7、$存在的意义(不需要加引号的时候不能用#,例如表名,字段名,列名等)
当我们需要对数据进行逆序正序排序的时候
(1)使用#(错误)
会执行失败因为我们用#我们的SQL识别的代码是
desc上多了个引号,所以会报错,不能有这两个单引号
(2)使用$(正确)
(3)如何避免SQL注入
(3.1)
(3.2)不接受用户url输入的参数,参数由后台来处理
8、模糊查询
(1)通过$来实现(这个方法没法换成#)
(2)利用CONCAT函数来使用#实现

相关文章:

  • 算法刷题Day27 | 39. 组合总和、40.组合总和II、131.分割回文串
  • FastGpt流程
  • Redis 持久化个人总结
  • 【算法】两数之和(暴力求解+哈希表)
  • 用tkinter来实现扫雷游戏
  • usb_camera传输视频流编码的问题记录!
  • Elasticsearch 聚合函数返回空数组|查询返回空内容 rs里有数据
  • 海康Ehome2.0与5.0设备接入EasyCVR视频汇聚平台时的配置区别
  • 穿越代码之海:探寻结构体深层逻辑,展望未来应用新天地
  • webpack环境配置分类结合vue使用
  • 蓝桥杯算法题:最大比例
  • 金融企业区域集中库的设计构想和测试验证
  • kubeadm部署的k8s1.29集群证书更新
  • 微信小程序中实现埋点的方法
  • flink1.18源码本地调试环境
  • JS 中的深拷贝与浅拷贝
  • Docker 笔记(2):Dockerfile
  • flask接收请求并推入栈
  • laravel 用artisan创建自己的模板
  • Promise面试题2实现异步串行执行
  • scala基础语法(二)
  • Spring Boot MyBatis配置多种数据库
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • WePY 在小程序性能调优上做出的探究
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 使用 QuickBI 搭建酷炫可视化分析
  • 试着探索高并发下的系统架构面貌
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 在Mac OS X上安装 Ruby运行环境
  • mysql面试题分组并合并列
  • puppet连载22:define用法
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • $$$$GB2312-80区位编码表$$$$
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (20050108)又读《平凡的世界》
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (三)docker:Dockerfile构建容器运行jar包
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)memcache、redis缓存
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)详解PHP处理密码的几种方式
  • ****Linux下Mysql的安装和配置
  • .NET Core中的去虚
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 中 GetProcess 相关方法的性能
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [acwing周赛复盘] 第 94 场周赛20230311
  • [BUG]vscode插件live server无法自动打开浏览器