4.11---Mybatis之#{}和${}的区别(复习版本)

news2025/1/20 11:02:02

在这里插入图片描述

1、在MyBatis 的映射配置文件中,动态传递参数有两种方式:

1.#{} 占位符
2.${} 拼接符

2、#{} 和 ${} 的区别

#{} 为参数占位符 ?,即sql 预编译
${} 为字符串替换,即 sql 拼接

#{}:动态解析 -> 预编译 -> 执行
${}:动态解析 -> 编译 -> 执行

#{} 的变量替换是在DBMS 中
${} 的变量替换是在 DBMS 外

select * from t_user where name = #{param}

如果想执行相同的 SQL,用 $ 写法如下:

select * from t_user where name = '${param}'

#{} 能防止sql 注入
${} 不能防止sql 注入

3.#{} 和 ${} 的实例:

假设传入参数为 1

开始:
#{}:select * from t_user where uid=#{uid}
: s e l e c t ∗ f r o m t u s e r w h e r e u i d = ′ {}:select * from t_user where uid= ' selectfromtuserwhereuid={uid}’

然后
#{}:select * from t_user where uid= ?
${}:select * from t_user where uid= ‘1’

最后

#{}:select * from t_user where uid= ‘1’
${}:select * from t_user where uid= ‘1’

4.#{} 和 ${} 的大括号中的值

1.单个参数的情形
#{}:
无MyBatis 默认值,可任意,且与参数名无关

在这里插入图片描述

在这里插入图片描述

${}:
1.使用 MyBatis 默认值 value,即 ${value}

在这里插入图片描述

在这里插入图片描述
2.使用自定义参数名,前提:在映射器接口方法的参数前加注解@Param(“”)
在这里插入图片描述
在这里插入图片描述
2.多个参数的情形
#{}:
使用MyBatis 默认值 arg0、arg1、arg2 … 或 param1、param2、param3 …
在这里插入图片描述
在这里插入图片描述

使用自定义参数名,前提:在映射器接口方法的参数前加注解@Param(“”)

在这里插入图片描述

在这里插入图片描述

${}:
使用MyBatis 默认值 arg0、arg1、arg2 … 或 param1、param2、param3 …

在这里插入图片描述

在这里插入图片描述

使用自定义参数名,前提:在映射器接口方法的参数前加注解@Param(“”)

在这里插入图片描述

在这里插入图片描述

注:@Param(“”) 是 @Param(value=“”) 的简写

5.#{} 和 ${} 在使用中的技巧和建议

1.不论是单个参数,还是多个参数,一律都建议使用注解@Param(“”)
2.能用 #{} 的地方就用 #{},不用或少用 ${}
3.表名作参数时,必须用 ${}。如:select * from ${tableName}
4.order by 时,必须用 ${}。如:select * from t_user order by ${columnName}
5.使用 ${} 时,要注意何时加或不加单引号,即 和 ′ {} 和 ' {}’

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

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

相关文章

[STM32F103C8T6] 重做51 基于iic的oled显示实验

51单片机没有硬件iic,我们是通过io口软件模拟iic时序 https://blog.csdn.net/weixin_63303786/article/details/128705478?spm1001.2014.3001.5501https://blog.csdn.net/weixin_63303786/article/details/128705478?spm1001.2014.3001.5501 而stm32有iic硬件&am…

Mysql(函数) 字符串截取、拆分, 逗号分割字符串当做 in 的条件

目录 引言: 数据库函数的总结(一) 1. mysql截取拆分 2. 逗号分割的字符串 作为in条件 -> 2.1 正常的效果应该是 ---> 2.1.1 错误: 3. 字符串合并(多条数据合并 用、分割) 引言: 数据库函数的总结(一) 1. 字符串截取、拆分 2. 逗号分割字符串当做 in 的条件 …

Mysql 学习(三)InnDB 存储引擎-页结构

数据页结构的大概 首先我们先来了解一下,InnoDB的存储单元是数据页的概念,页的大小一般是16KB,而InnoDB里面存放了很多不同目的 的数据页,比如存放Insert Buffer的信息页,Undo的日志页等等。但是这里我们主要讲解的是…

从C语言到C++(第一章_C++入门_上篇)C++学习介绍(命名空间和C++输入输出流)

目录 前言 1.认识C 2.C的重要性 3.如何学习C 4.编写hello world! 5.关键字 6.命名空间(namespace) 6.1命名空间的定义 6.2命名空间里的内容 6.3命名空间重名问题 6.4命名空间展开问题 6.5匿名命名空间 7.C的输入与输出 7.1 输入和…

生产模块-报工自动产生返工订单(触发点-Trigger Point)

目录 应用场景 配置点-完整模式(通过自定义状态触发) 其他说明 应用场景 一般来说适合自动化程度高,生产集成了MES和质检的功能,工序报工时发生返工业务时,根据返工的指令,系统直接下达返工订单。例如&…

3年经验,面试测试岗只会功能测试开口要求18K,令我陷入沉思。

由于朋友临时有事, 所以今天我代替朋友进行一次面试,公司需要招聘一位自动化测试工程师,我以很认真负责的态度完成这个过程, 大概近30分钟。 主要是技术面试, 在近30分钟内, 我与被面试者是以交流学习的方式…

【CSS】定位 ③ ( 绝对定位 | 父容器有定位相对于父容器定位 | 父容器没有定位相对于浏览器进行定位 )

文章目录一、绝对定位二、标准流下的父容器与子元素关系1、标准流下父容器与子容器代码2、移动父容器后的效果三、子元素设置绝对定位与父容器是否有定位的效果对比1、父容器没有定位的情况下为子容器添加定位2、父容器有定位的情况下为子容器添加定位3、父容器没有定位爷爷容器…

Doris(2):Doris编译部署

1 Doris编译 Apache Doris提供直接可以部署的版本压缩包:https://cloud.baidu.com/doc/PALO/s/Ikivhcwb5 也可以自行编译压缩包后使用(推荐) 1.1 使用 Docker 开发镜像编译(推荐) 这个是官方文档推荐的,…

4.15搞力扣哈哈

1. 1023. 驼峰式匹配 难度中等107收藏分享切换为英文接收动态反馈 如果我们可以将小写字母插入模式串 pattern 得到待查询项 query,那么待查询项与给定模式串匹配。(我们可以在任何位置插入每个字符,也可以插入 0 个字符。) 给…

map原理

map源码结构体: type hmap struct {count int // 元素的个数B uint8 // buckets 数组的长度就是 2^B 个overflow uint16 // 溢出桶的数量​buckets unsafe.Pointer // 2^B个桶对应的数组指针oldbuckets unsafe.Pointer // 发生扩容时&#xff0…

系统学习Git

Git目录工作区、暂存区和版本库分别是什么?Git常用命令有哪些?Git是如何进行分支管理的?Git如何查看提交历史?实践出真知!报错fatal: pathspec text1.txt did not match any filesGit 是一个开源的分布式版本控制系统工…

【k8s完整实战教程4】使用kubesphere部署项目到k8s

系列文章:这个系列已完结,如对您有帮助,求点赞收藏评论。 读者寄语:再小的帆,也能远航! 【k8s完整实战教程0】前言【k8s完整实战教程1】源码管理-Coding【k8s完整实战教程2】腾讯云搭建k8s托管集群【k8s完…

SSM学习记录4:SSM整合(注释方式 + SprigMVC项目 + 2022发布版本IDEA)

SSM整合 整合中Tomcat等配置与前面学习相同 注:SpringMvcConfig里扫描的用Configuration注解的组件可以装载SpringConfig里扫描的组件,而SpringMvc不可以装载SpringMvcConfig里扫描的组件,相同配置类中扫描的组件可以相互装载 1.添加依赖↓ …

PLATO: Pre-trained Dialogue Generation Model with Discrete Latent Variable论文学习

一、大纲内容 二、详细内容 Abstract ○ 对话生成模型可以用于闲聊、知识对话、对话问题生成 ○ 本文 ■ 构建了一个灵活的attention机制,充分的促进了单向和双向的语言生成模型 ■ 介绍了一个离散的潜变量,较好的解决了一问多答的问题 ■ 上述两个结构…

DAY 36 文本处理命令awk

awk的概述 awk: 在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本, 默认以空格或tab键作为分隔符作为分隔,并按模式或者条件执行编辑命令 awk信息的读入也是逐行指定的匹配模式进行查找&#x…

Unity ——使用贝塞尔曲线对三维管状物体进行弯曲

参考链接:【Unity】弹性鱼竿简单实现-通过贝塞尔曲线修改Mesh - 简书 参考论文:吴晓亮, 黄襄念. Unity 中使用贝塞尔曲线对三维物体进行弯曲[J]. 现代计算机, 2016 (5): 57-59. unity项目下载:https://download.csdn.net/download/weixin_4…

时间序列 | MATLAB实现CNN-GRU-Attention时间序列预测

时间序列 | MATLAB实现CNN-GRU-Attention时间序列预测 目录时间序列 | MATLAB实现CNN-GRU-Attention时间序列预测预测效果基本介绍模型描述程序设计参考资料预测效果 基本介绍 MATLAB实现CNN-GRU-Attention时间序列预测,CNN-GRU结合注意力机制时间序列预测。 模型描…

涨点技巧:卷积变体DCNV2引入Yolov8,助力小目标涨点

1.DCN V2介绍 DCN V2: Improved Deep & Cross Network and Practical Lessons for Web-scale Learning to Rank Systems 论文:https://arxiv.org/abs/2008.13535 作者通过在DCN的基础上,增加了2个创新点,分别是调制模块和使用多个调制后的DCN模块,从形成了DCN的升级版…

解码营养行业新趋势 2023晶球益生菌与肠内营养健康高峰论坛圆满落幕

后疫情时代,国人自身健康管理意识日益提高,越来越多的人认识到到微生物组、营养吸收与免疫健康的密切联系,并逐渐认可微生态和肠内营养在临床应用过程中的积极作用,使得营养治疗研究成果进一步落地转化。消费升级新时代&#xff0…

一文带你读懂,这三个交换机层级的区别和联系。

01 第二层交换机 OSI参考模型的第二层叫做数据链路层,第二层交换机通过链路层中的MAC地址实现不同端口间的数据交换。 第二层交换机主要功能,就包括物理编址、错误校验、帧序列以及数据流控制。 因为这是最基本的交换技术产品,目前桌面型交…