#{}和${}的区别

#{}和${}的区别

  • .
  • 本质区别:
  • 使用注意事项
    • 防止SQL注入
    • 排序
    • like查询

.

在这里插入图片描述

在使用mybatis操作数据库的时候,我们在编写sql语言的时候,会遇到一个问题,就是在传参的时候,有两个符号#,$.这两个符号有什么异同呢,接下来,我就会带着大家对这个问题进行简单的探讨

本质区别:

#执行的是预编译SQL,$执行的是即时SQL.
#{} 使用的是预编译SQL, 通过 ? 占位的方式, 提前对SQL进行编译, 然后把参数填充到SQL语句中. #{} 会根据参数类型, 自动拼接引号 ‘’ .
${} 会直接进行字符替换, ⼀起对SQL进行编译. 如果参数为字符串, 需要加上引号 ‘’ ,因为它不会自动拼接引号 ‘’ .

使用注意事项

防止SQL注入

SQL注入:是通过操作输入的数据来修改事先定义好的SQL语句,以达到执行代码对服务器进行攻击的方法。
因此,${}有SQL注入的风险,我们应该尽量使用#{}

排序

在做sql排序的时候,desc和asc不能添加引号''',因此我们只能使用${}

like查询

like查询表达式:
‘%参数%’
如果参数使用#{},则会给参数自动添加一个'',查询会报错,因此我们不能使用#{},但是使用${}又可能会导致SQL注入,因此我们需要用其他的方法来解决问题
解决办法: 使用mysql 的内置函数 concat() 来处理,实现代码如下:

like concat('%',#{参数},'%')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea自动生成实体类

第一步:idea连接数据库 出现这个就连接成功 第二步:选择数据库 第三步:创建实体类 也可以点击数据库一下子全部创建 选择创建实体类所放位置 这样就完成了,点击看看对其做相应修改

RK3588平台开发系列讲解(视频篇)RKMedia的VDEC模块

文章目录 一、 VDEC模块支持的编码标准介绍二、VDEC API的调用三、VDEC解码流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢RKMedia是RK提供的一种多媒体处理方案,可实现音视频捕获、音视频输出、音视频编解码等功能。 一、 VDEC模块支持的编码标准介绍 RK3688 V…

【日常总结】MobaXterm session 如何迁移

一、场景 二、解决方案 三、实战 Stage 1:右键导出 Import sessions from file Stage 2:新MobaXterm软件中导入即可。Export all sessions to file 四、不足 一、场景 电脑更换,原电脑上MobaXterm中的20多个连接如何迁移 二、解决方案 …

如何判断 LM358 芯片是否损坏或故障?

LM358 芯片是一种流行的低功耗双运放,广泛应用于各种电子电路中,包括放大器、滤波器、积分器、比较器等。它以其低成本、高性价比和广泛的工作电源范围(3V至32V单电源或1.5V至16V双电源)而被广泛使用。 然而,像所有电…

十分钟学会用springboot制作微信小程序富文本编辑器

1.1 富文本模型设计 在构建富文本编辑器系统时,首先需要设计一个合适的富文本模型。 CREATE TABLE IF NOT EXISTS rich_texts (id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(255),content TEXT,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );这个表包括…

如何在FBX剔除Lit.shader依赖

1)如何在FBX剔除Lit.shader依赖 2)Unity出AAB包(PlayAssetDelivery)模式下加载资源过慢问题 3)如何在URP中正确打出Shader变体 4)XLua打包Lua文件粒度问题 这是第371篇UWA技术知识分享的推送,精…

维护神经健康:新生儿补充维生素B12的注意事项

引言: 维生素B12是维持神经系统正常运作所必需的关键成分,对于新生儿的生长发育具有重要的作用。本文将深入探讨维生素B12的功能、新生儿补充的必要性,以及在补充维生素B12时应该注意的事项,以为父母提供科学、全面的育儿指南。 …

springCloud gateway 防止XSS漏洞

springCloud gateway 防止XSS漏洞 一.XSS(跨站脚本)漏洞详解1.XSS的原理和分类2.XSS漏洞的危害3.XSS的防御 二.Java开发中防范XSS跨站脚本攻击的思路三.相关代码(适用于spring cloud gateway)1.CacheBodyGlobalFilter.java2.XssRequestGlobalFilter.java…

C++基础语法学习笔记

C Tutorial 1.基础语法 C 应用&#xff1a;操作系统、图形用户界面和嵌入式系统 C和C区别&#xff1a;C支持类和对象 C语法 #include <iostream> using namespace std;int main(){cout << "hello world!";return 0; }int main () { cout << &q…

8-Docker网络模式之container

1.介绍 Docker container网络模式是指指定新创建的Docker容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。 使用Docker container网络模式新建的容器不会创建的自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口等。然而两个容器除了网络…

知识图谱推理方法综述

目录 前言1 基于符号表示的推理方法1.1 Axioms和Datalog1.2 图结构和规则学习1.3 TBox和ABox 2 基于向量表示的推理方法2.1 嵌入系列和Ontology Embedding2.2 向量的规则学习2.3 图神经网络 3 符号逻辑和表示学习的融合3.1 向量表示学习与本体规则学习3.2 规则演绎推理3.3 符号…

Oracle闪回日志管理(flashbackup log)

Oracle闪回日志管理&#xff08;flashbackup log&#xff09; 1.开启闪回日志 shutdown immediate startup mount; alter database archivelog; alter database flashback on; alter database open; 2、查看闪回日志保留期限 show parameter flash 默认是1440分钟&#xff0c…

软件工程知识梳理4-详细设计

详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统&#xff0c;也就是说.经过这个阶段的设计工作.应该得出对目标系统的精确描述.从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。 详细设计的的目标不仅仅是逻辑上正确地实现每个模块地功能&a…

手机屏幕生产厂污废水处理需要哪些工艺设备

随着手机行业的快速发展&#xff0c;手机屏幕生产厂的规模也越来越大&#xff0c;但同时也带来了大量的污废水排放问题。为了保护环境和人类的健康&#xff0c;手机屏幕生产厂需要采取适当的工艺设备来处理污废水。本文将介绍手机屏幕生产厂污废水处理所需的工艺设备。 首先&am…

计算机速成课Crash Course - 27. 3D 图形

今天继续计算机速成课Crash Course的系列讲解。 更多技术文章&#xff0c;全网首发公众号 “摸鱼IT” 锁定 -上午11点 - &#xff0c;感谢大家关注、转发、点赞&#xff01; 计算机速成课Crash Course - 27. 3D 图形 (qq.com) 27. 3D 图形 在过去五集&#xff0c;我们从基于…

Wireshark网络协议分析 - Wireshark速览

在我的博客阅读本文 文章目录 1. 版本与平台2. 快速上手2.1. 选择网络接口进行捕获&#xff08;Capture&#xff09;2.2. 以Ping命令为例进行抓包分析2.3. 设置合适的过滤表达式2.4. 数据包详情2.5. TCP/IP 四层模型 3. 参考资料 1. 版本与平台 Wireshark是一个开源的网络数据…

npm i 遇到了 npm ERR! code CERT_HAS_EXPIRED

npm i 遇到了 npm ERR! code CERT_HAS_EXPIRED 更新你的系统时间【命令 date】。确保你的计算机上的时间和时区设置正确&#xff0c;并且与当前时间相符。 清除你的 npm 缓存。使用 npm cache clean --force 命令清除你的 npm 缓存&#xff0c;关闭ssl验证&#xff0c;并重新运…

Python+Selenium+Unittest 之selenium15--等待时间

在正常的自动化过程中&#xff0c;如果整篇代码中没有加等待时间的话&#xff0c;有时候可能页面跳转或者还没开始点击就执行到下一个流程了&#xff0c;这时候因为页面没有加载完毕&#xff0c;所以有可能会导致找不到对应的元素而报错&#xff0c;因此我们需要在整个代码流程…

AlmaLinux上安装Docker

AlmaLinux上安装Docker 文章目录 AlmaLinux上安装Docker一、前言二、具体步骤1、Docker 下载更新系统包索引&#xff1a;添加Docker仓库&#xff1a;安装Docker引擎&#xff1a; 2、Docker服务启动启动Docker服务&#xff1a;设置Docker开机自启&#xff1a; 3、Docker 安装验证…

Android开发--ProgressBar应用显示测点数量

1.自定义ProgressBarView public class ProgressBarView extends View {private Paint mPaintBack;private Paint mPaint;private Paint mPaintText;private float process;int strokeWidth 3;//圈宽度int textSize 17;//字大小private long duration 1000;private float st…