MyBatis XML 映射文件中的 SQL 语句可以分为动态语句和静态语句
目录
静态查询:
动态查询:
静态更新:
动态更新:
静态删除:
动态删除:
动态语句和静态语句在 MyBatis 中的作用如下:
静态查询:
静态查询是指在 SQL 语句中执行固定的查询操作,查询的条件和内容是预先确定的,不会随着用户输入或其他条件的改变而改变。以下是一个静态查询的示例:
<select id="selectUsersByRole" resultType="com.example.goods_admin.entity.User">SELECT * FROM userWHERE name= 'admin'
</select>
在上述的例子中,查询语句中的条件 name= 'admin' 是固定的,无论用户输入什么内容,都会查询出 "name" 字段等于 "admin" 的用户信息。
动态查询:
动态查询是指在 SQL 语句中根据用户输入或其他条件改变查询的操作。查询的条件和内容是根据用户的输入或其他条件动态生成的。以下是一个动态查询的示例:
<select id="seleteUser" resultType="com.example.goods_admin.entity.User">select * from user<where><if test="keyWord !=null and keyWord!=''">userName like concat('%', #{keyWord}, '%')</if></where></select>
在这个示例中,查询语句根据用户输入的关键字来动态生成查询条件。如果用户输入了关键字,那么将会根据userName进行模糊匹配查询。
静态更新:
静态更新是指在 SQL 语句中执行固定的更新操作,更新的内容和条件是预先确定的,不会随着用户输入或其他条件的改变而改变。以下是一个静态更新的示例:
<update id="updateUserStatus" parameterType="com.example.goods_admin.entity.User">UPDATE userSET status = 'active'WHERE id = #{id}
</update>
在上述的例子中,更新语句中的条件 id = #{id} 是固定的,无论用户输入什么内容,都会更新 "id" 字段等于给定参数 "id" 的用户状态为 "active"。
动态更新:
动态更新是指在 SQL 语句中根据用户输入或其他条件改变更新的操作。更新的内容和条件是根据用户的输入或其他条件动态生成的。以下是一个动态更新的示例:
<update id="updateUser" parameterType="com.example.goods_admin.entity.User">UPDATE user<set><if test="username != null">username = #{username},</if><if test="email != null">email = #{email},</if></set>WHERE id = #{id}
</update>
在这个示例中,更新语句根据用户输入的用户名和邮箱来动态生成更新内容,同时根据给定参数 "id" 来确定更新的条件。
静态删除:
静态删除是指在 SQL 语句中执行固定的删除操作,删除的条件是预先确定的,不会随着用户输入或其他条件的改变而改变。以下是一个静态删除的示例:
<delete id="deleteUserById" parameterType="java.lang.Integer">DELETE FROM userWHERE id = #{id}
</delete>
在上述的例子中,删除语句中的条件 id = #{id} 是固定的,无论用户输入什么内容,都会删除 "id" 字段等于给定参数 "id" 的用户。
动态删除:
动态删除是指在 SQL 语句中根据用户输入或其他条件改变删除的操作。删除的条件是根据用户的输入或其他条件动态生成的。以下是一个动态删除的示例:
<delete id="deleteUser" parameterType="com.example.goods_admin.entity.User">DELETE FROM userWHERE 1=1<if test="username != null">AND username = #{username}</if><if test="email != null">AND email = #{email}</if>
</delete>
在这个示例中,删除语句根据用户输入的用户名和邮箱来动态生成删除条件。
动态语句和静态语句在 MyBatis 中的作用如下:
-
静态语句:
- 静态语句是指在 SQL 语句中执行固定的操作,不会随着用户输入或其他条件的改变而改变。
- 静态语句适用于那些更新、插入或删除的操作,在这些操作中,更新内容和条件是预先确定的。
- 静态语句可以通过 MyBatis XML 映射文件来定义,将 SQL 语句与 Java 代码进行分离,提高了代码的可维护性。
- 静态语句在执行过程中可以利用 MyBatis 的参数映射功能,将 Java 对象的属性值映射到 SQL 语句中的占位符上。
-
动态语句:
- 动态语句是根据用户输入或其他条件改变进行的操作,更新内容和条件是根据动态生成的。
- 动态语句适用于那些需要根据不同情况执行不同操作的场景,例如根据用户的搜索条件动态生成查询语句。
- 动态语句可以通过 MyBatis XML 映射文件中的条件判断和循环等标签来实现,根据不同条件动态生成 SQL 语句的不同部分。
- 动态语句可以使 SQL 语句更加灵活,根据不同的条件在运行时动态生成最终的 SQL 语句,提高了系统的可扩展性和适应性。
总结起来,静态语句适用于固定的操作,而动态语句适用于根据不同条件进行动态生成 SQL 语句的操作。通过使用静态语句和动态语句,可以使数据库操作更加灵活和可维护。
相关文章:
MyBatis XML 映射文件中的 SQL 语句可以分为动态语句和静态语句
目录 静态查询: 动态查询: 静态更新: 动态更新: 静态删除: 动态删除: 动态语句和静态语句在 MyBatis 中的作用如下: 静态查询: 静态查询是指在 SQL 语句中执行固定的查询操作…...
Flask用于生产环境
Flask是一个用Python编写的轻量级Web应用框架,可以用于开发和部署Web服务。要安装Flask,您需要以下步骤: - 安装Python和pip,如果您还没有的话。 - 创建一个虚拟环境,以便隔离您的Flask应用程序和其他Python项目。 - …...
程序员如何向上管理,升职加薪
向上管理 多向领导展示自己的工作量。 解决完问题,可以把领导拉到群里,不然你解决了问题,领导都不知道。 积极向领导汇报,及时反馈任务进度,反馈遇到的问题。 要学会表现自己,光说不干假把式,…...
Microsoft Word 删除空行
Microsoft Word 删除空行 1. 删除空行1.1. 替换1.2. 段落标记 References 1. 删除空行 1.1. 替换 1.2. 段落标记 特殊格式 -> 段落标记 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/...
基于一次应用卡死问题所做的前端性能评估与优化尝试
问题背景 在上个月,由于客户反馈客户端卡死现象但我们远程却难以复现此现象,于是我们组织了一次现场上门故障排查,并希望基于此次观察与优化,为客户端开发提供一些整体的优化升级。当然,在尝试过程中,也发…...
JVM(上)
目录 一、JVM概述 一、JVM作用 二、JVM整体组成部分 二、JVM结构-类加载 一、类加载子系统概述 二、类加载过程 1.加载 2.链接 3.初始化(类加载过程中的初始化) 三、类加载器分类 大致分两类: 细致分类: 四、双亲委派机制 五、打…...
【js】js 异步机制详解 Generator / Async / Promise
三种语法功能放在一起,是因为他们都有相似特点: 维护某种状态在未来恢复状态并执行 本文重点回答以下几个问题: 为什么 Generator 和 Async 函数的 代码执行流 都可以简化成树形结构?async 函数为什么返回一个 promise…...
【动态规划】【数学】【C++算法】805 数组的均值分割
作者推荐 【动态规划】【数学】【C算法】18赛车 本文涉及知识点 动态规划 数学 805 数组的均值分割 给定你一个整数数组 nums 我们要将 nums 数组中的每个元素移动到 A 数组 或者 B 数组中,使得 A 数组和 B 数组不为空,并且 average(A) average(B)…...
Django笔记(五):模型models
首 Django中的模型对应数据库中的一张表格。 定义模型 player.py from django.db import modelsclass Player(models.Model):idx models.IntegerField(uniqueTrue)def __str__(self):return str(self.id)每个模型需要继承models类,如上Player模型定义了一个整形…...
一个golang小白使用vscode搭建Ununtu20.04下的go开发环境
文章目录 前言搭建go环境下载go安装包解压go压缩包完成安装配置环境变量编写一个helloword程序 安装VSCode插件安装智能提示插件安装go依赖包修改代理并重新安装依赖包 go.mod 和 go.workgo.modgo.work小试一下go.work 总结 前言 先交代一下背景,距离正式接触golan…...
【复现】Hytec Inter HWL 2511 SS路由器RCE漏洞_25
目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 Hytec Inter HWL 2511 SS是日本Hytec Inter 公司的一款工业级 LTE 路由器,可用于远程数据传输,例如收集传…...
Kafka系列(四)
本文接kafka三,代码实践kafkaStream的应用,用来完成流式计算。 kafkastream 关于流式计算也就是实时处理,无时间概念边界的处理一些数据。想要更有性价比地和java程序进行结合,因此了解了kafka。但是本人阅读了kafka地官网&#…...
【Linux学习】进程信号
目录 十七.进程信号 导言 17.1 linux中的信号列表 17.2 标准信号与实时信号 17.3 信号的产生 17.3.1 通过终端按键产生信号 17.3.2 调用系统函数产生信号 17.3.3 软件条件产生信号 17.3.4 硬件异常产生信号 17.3.5 【补充】核心转储 Core Dump 17.4 信号的阻塞 17.4.1 信号相关…...
机器学习没那么难,Azure AutoML帮你简单3步实现自动化模型训练
在Machine Learning 这个领域,通常训练一个业务模型的难点并不在于算法的选择,而在于前期的数据清理和特征工程这些纷繁复杂的工作,训练过程中的问题在于参数的反复迭代优化。 AutoML 是 Azure Databricks 的一项功能,它自动的对…...
数学建模实战Matlab绘图
二维曲线、散点图 绘图命令:plot(x,y,’line specifiers’,’PropertyName’,PropertyValue) 例子:绘图表示年收入与年份的关系 ‘--r*’:--设置线型;r:设置颜色为红色;*节点型号 ‘linewidth’:设置线宽࿱…...
TypeError the JSON object must be str, bytes or bytearray, not ‘list‘
在使用python的jason库时,偶然碰到以下问题 TypeError: the JSON object must be str, bytes or bytearray, not ‘list’ 通过如下代码可复现问题 >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> import json >>> ra json.loads(a) Trac…...
数字IC后端设计实现 | PR工具中到底应该如何控制density和congestion?(ICC2Innovus)
吾爱IC社区星友提问:请教星主和各位大佬,对于一个模块如果不加干预工具会让inst挤成一团,后面eco修时序就没有空间了。如果全都加instPadding会导致面积不够overlap,大家一般怎么处理这种问题? 在数字IC后端设计实现中…...
产品经理与产品运营的区别和联系
一、两者的职责区别 产品经理的目的:是创造有价值的产品 产品运营的目的:是让产品能有效的发挥出它应有的价值 二、两者的工作内容区别产品经理的工作内容 产品的经理的目的是创造有价值的产品,因此产品经理的所有工作都是围绕着…...
CMU15-445-Spring-2023-分布式DBMS初探(lec21-24)
Lecture #21_ Introduction to Distributed Databases Distributed DBMSs 分布式 DBMS 将单个逻辑数据库划分为多个物理资源。应用程序(通常)并不知道数据被分割在不同的硬件上。系统依靠单节点 DBMS 的技术和算法来支持分布式环境中的事务处理和查询执…...
Arch linux 安装
Arch linux 安装 介绍下载制作iSO启动盘安装arch linux设置字体连接互联网 安装过程磁盘分区设置设置镜像源设置引导文件挂载点安装base等基础软件生成fatab文件更改时区更改编码、语言更改编码更改语言 用户管理设置root密码新建普通用户 安装grub启动网络服务/GDM查看系统网络…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
