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

mybatis#{}与${}的区别,mybatis关联查询,mybatis动态sql

1.#{}与${}的区别

#{}是占位符,是采用预编译的方式向sql中传值,可以防止sql注入如果我们往sql中传值,可以使用这个,例如这个delete语句

${}将内容直接拼接到sql语句中,一般不用于传值,可以当作列名,加上单引号可以传值直接拼在sql语句中,例如排序,分组,需要在定义方法的时候加上注解@param

当作列名

当作列名跟在group by后面 

 

2.mybatis关联查询

关联查询

关联查询就要使用resultmap标签,让数据库的数据与java对象中的属性一一印射,

 <resultMap id="findadmin" type="admin"><id column="adminid" property="id"></id><result column="adminaccount" property="account"></result></resultMap><select id="findadmin" resultMap="findadmin">
select id adminid,account adminaccount from admin</select>

使用resultmap标签对查询结果进行自定义印射
          type="admin"返回值类型
           <id column="adminid" property="id"></id> id主键印射
        <result column="adminaccount" property="account"></result> 普通列名印射

例如查询学生表与专业表

关联查询时一般都要写association标签在resultmap标签里面,关联查询时,id,num,name,gender等都要书写上,mybatis默认出现关联查询如果不写的话就不能将数据库的数据印射到java对象中。单表查询的话自定义印射可以不用书写。

印射的过程就是对这段代码的封装。

嵌套查询

查询出来的表结构也发生了变化,但是最终的结果不变

进行了两次查询,可以理解为进行了两次单表查询,但是将关联条件当作第二次查询的条件。

一对多数据封装,在major对象里面有学生集合,学生集合为list,类型是学生类型

查询的结果有多条时,mybatis会自动对数据进行封装的major类型的集合里面。

一对多关联查询

注解查询,简单查询或者单张表查询可以使用,因为注解查询sql语句是用字符串形式拼接的,所以有时候书写可能会比较麻烦,简单的sql查询可以使用,稍微难的不建议使用。

动态sql

动态sql,在sql查询中增加逻辑判断

if标签中的test属性条件成立就会执行if标签里面的标签体
where 标签当if标签里面条件成立时,where标签会动态删除if标签里面的and or关键字保证sql语句正确性

trim 当条件成立时可以自定义前缀关键字和后缀关键字

prefix="where" 前缀where关键字
prefixOverrides="and|or" 覆盖指定的关键字(and或者or)

Choose标签 choose标签必须与when标签一块使用,otherwise可以省略,
可以理解为if else ,可以没有else必须要有if,if判断里面为true则都会执行,trim会自动添加前缀和自动省略一些关键字

Set标签 修改数据可以使用此标签,他可以自动覆盖掉sql语句中的逗号

Student类定义时num属性为int类型,java会自动给num赋值为0,建议以后定义使用integer,直接使用null即可。

删除学生 foreach循环
item="id" 每次循环的数据赋给这个id
collection="array" 循环的数据类型,数组array,集合list
open="(" 开始的标志
separator="," 两次循环间用逗号隔开
close=")" 结束的标志

通过列名查询学生信息,传递值一般用#{},传递列名一般使用${}

相关文章:

mybatis#{}与${}的区别,mybatis关联查询,mybatis动态sql

1.#{}与${}的区别 #{}是占位符&#xff0c;是采用预编译的方式向sql中传值&#xff0c;可以防止sql注入如果我们往sql中传值&#xff0c;可以使用这个&#xff0c;例如这个delete语句 ${}将内容直接拼接到sql语句中&#xff0c;一般不用于传值&#xff0c;可以当作列名&#x…...

K8S(Kubernates) 知识目录

1. 一文了解K8S&#xff08;Kubernates&#xff09; 2. K8S CNI CRI CSI 3. K8S Helm 4. K8S Harbor 5. K8S Operator 6. K8S 服务网格 7. K8S 存储 8. K8S 容器调度 9. K8S 探针 10. K8S Watch 11. K8S 版本发版 12. K8S 资源管理CPU&内存 13. K8S Flannel 1…...

基于Java+SpringBoot+Vue+MySQL的失物招领管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的失物招领管理系统【附源码文档】、前后…...

Mybatis链路分析:JDK动态代理和责任链模式的应用

背景 此前写过关于代理模式的文章&#xff0c;参考&#xff1a;代理模式 动态代理功能&#xff1a;生成一个Proxy代理类&#xff0c;Proxy代理类实现了业务接口&#xff0c;而通过调用Proxy代理类实现的业务接口&#xff0c;实际上会触发代理类的invoke增强处理方法。 责任链功…...

【Spring Boot 3】【Web】解析获取HTTP请求参数

【Spring Boot 3】【Web】解析获取HTTP请求参数 背景介绍开发环境开发步骤及源码工程目录结构背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要…...

conda换源是什么?

换源对于我们在国内的python使用者来说是非常有必要的&#xff0c;之前讲了pip如何换源。 pip更换为国内镜像源的步骤&#xff0c;为什么要更换镜像源 那现在讲一下conda如何换源。 conda换源&#xff08;清华源&#xff09; 有时候&#xff0c;conda虽然和pip共用一个本地…...

英文缩写大全(IT 领域和电子行业制造领域)

英文缩写大全&#xff08;IT 领域和电子行业制造领域&#xff09; 前言一、计算机通用二、WINDOWS三、LINUX四、编程语言1. 前端 / 设计2. JAVA / Android3. PHP4. Python 四、电子行业制造领域五、常识 前言 本文收集了各类英文缩写大全&#xff0c;方便查阅&#xff0c;主要…...

如何将图片左右翻转?8种方法来将图片进行左右翻转

如何将图片左右翻转&#xff1f;在现代数字化的图像处理过程中&#xff0c;图片的方向调整是常见的操作之一。左右翻转图片不仅可以改变图像的视觉效果&#xff0c;还可以用于修正拍摄时的角度问题&#xff0c;或者满足特定设计和排版需求。比如&#xff0c;当你拍摄的照片由于…...

linux:ln用法详解

文章目录 1. 描述2. 语法2.1 硬链接&#xff08;Hard Link&#xff09;2.2. 符号链接&#xff08;Symbolic Link / Soft Link&#xff09; 3. ln 命令的常用选项4. 例子 1. 描述 在 Linux 系统中&#xff0c;ln 命令用于创建硬链接&#xff08;Hard Link&#xff09;或符号链接…...

0基础跟德姆(dom)一起学AI Python进阶02-Python面向对象高级

1 [重点]定义类的几种语法 方式1&#xff1a;类名 在上一章节的学习过程中&#xff0c;我们都使用了这种定义类的语法&#xff1a; properties class 类名: 代码 ... 例如&#xff0c;使用该方式来定义一个老师类。 python # 1.class 类名: # pass class Te…...

【深度学习】softmax 回归的从零开始实现与简洁实现

前言 小时候听过一个小孩练琴的故事&#xff0c;老师让他先弹最简单的第一小节&#xff0c;小孩练了两天后弹不出。接着&#xff0c;老师让他直接去练更难的第二小节&#xff0c;小孩练习了几天后还是弹不出&#xff0c;开始感觉到挫败和烦躁了。 小孩以为老师之后会让他从简…...

Sollong、IO.NET和 Solana,为何参加 WebX 2024活动?

东京王子花园塔酒店 ChainCatcher_携手 DPCapital_XYZ与WebX_Asia共同打造“世界のStaking最大级集结|Tokyo站”盛会&#xff0c;为全球Staking爱好者与行业精英搭建交流合作桥梁&#xff01;全球顶尖Staking项目方、知名区块链机构、行业领袖与企业家将齐聚东京&#xff0c;共…...

3个免费好用的网站,可以转换PDF,提取MP3

今天分享的三个网站&#xff0c;分别用于文件转换PDF&#xff0c;QMC转MP3格式和配色网站。 TOPDF 这个网站是一个在线PDF转换工具&#xff0c;可以快速将文本文件、演示文稿、电子表格和图片转换为PDF格式。它支持多种文件格式&#xff0c;如AZW3、BMP、CHM、CSV、DjVu、DOC、…...

PHP智能匹配轻松预订自习室在线订座系统小程序源码

智能匹配&#xff0c;轻松预订——自习室在线订座系统 &#x1f4da;【开篇&#xff1a;告别排队&#xff0c;迎接智能学习新时代】&#x1f4da; 还在为找不到合适的自习室座位而烦恼吗&#xff1f;是不是每次去图书馆或自习室都要提前好久去排队占位&#xff1f;现在&#…...

构建高效医护人员排班系统:Spring Boot框架的优势

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理医护人员排班系统的相关信息成为必然。开发…...

深度学习——引言

一、机器学习的关键因素 1.1 数据 每个数据集由一 个个样本组成&#xff0c;大多情况下&#xff0c;数据遵循独立同分布。通常每个样本由一组特征属性组成。 好的数据集 { 数据样本多 正确的数据 ( g a r b a g e i n , g a r b a g e o u t ) 好的数据集 \begin{cases} 数据…...

安装Android Studio及第一个Android工程可能遇到的问题,gradle下载过慢、sync失败?

Android Studio版本众多&#xff0c;电脑操作系统、电脑型号、电脑硬件也是多种多样&#xff0c;幸运的半个小时内可以完成安装&#xff0c;碰到不兼容的电脑&#xff0c;一天甚至更长时间都无法安装成功。 Android安装及第一个Android工程分为4个步骤&#xff0c;为什么放到一…...

密码学---常见的其他密码

✨费纳姆密码&#xff1a;加解密都需要密钥&#xff0c;以二进制形式表示的密码。&#xff08;密钥多是一次性的&#xff0c;称位一次性密码本&#xff09; 加密过程&#xff1a; char_num {A: 1000001, B: 1000010, C: 1000011, D: 1000100,E: 1000101, F: 1000110, G: 100…...

Mysql8 主从复制主从切换(超详细)

文章目录 1 主从复制1.1 实施前提1.2 主节点配置(在192.168.25.91操作)1.3 从节点配置(在192.168.25.92操作)1.4 创建用于主从同步的用户1.5 开启主从同步1.5 主从同步验证 2 主从切换2.1 实施前提2.2 主节点设置只读(在192.168.25.91操作)2.3 检查主从数据是否同步完毕(在192.…...

8月29日wpf

小语 折磨我们的往往是想象&#xff0c;而不是真实。 学wpf 7.07 1.vs如何创建新项目&#xff1f; 退出&#xff0c;创建新项目&#xff0c;点c#&#xff0c;windows&#xff0c;进入界面 2.app.config在哪里&#xff1f; 好像只有这个。。。 试一下&#xff0c;不是 我…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

2.2.2 ASPICE的需求分析

ASPICE的需求分析是汽车软件开发过程中至关重要的一环&#xff0c;它涉及到对需求进行详细分析、验证和确认&#xff0c;以确保软件产品能够满足客户和用户的需求。在ASPICE中&#xff0c;需求分析的关键步骤包括&#xff1a; 需求细化&#xff1a;将从需求收集阶段获得的高层需…...

python打卡第47天

昨天代码中注意力热图的部分顺移至今天 知识点回顾&#xff1a; 热力图 作业&#xff1a;对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图&#xff0c;展示模…...