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 中的作用如下:

  1. 静态语句:

    • 静态语句是指在 SQL 语句中执行固定的操作,不会随着用户输入或其他条件的改变而改变。
    • 静态语句适用于那些更新、插入或删除的操作,在这些操作中,更新内容和条件是预先确定的。
    • 静态语句可以通过 MyBatis XML 映射文件来定义,将 SQL 语句与 Java 代码进行分离,提高了代码的可维护性。
    • 静态语句在执行过程中可以利用 MyBatis 的参数映射功能,将 Java 对象的属性值映射到 SQL 语句中的占位符上。
  2. 动态语句:

    • 动态语句是根据用户输入或其他条件改变进行的操作,更新内容和条件是根据动态生成的。
    • 动态语句适用于那些需要根据不同情况执行不同操作的场景,例如根据用户的搜索条件动态生成查询语句。
    • 动态语句可以通过 MyBatis XML 映射文件中的条件判断和循环等标签来实现,根据不同条件动态生成 SQL 语句的不同部分。
    • 动态语句可以使 SQL 语句更加灵活,根据不同的条件在运行时动态生成最终的 SQL 语句,提高了系统的可扩展性和适应性。

总结起来,静态语句适用于固定的操作,而动态语句适用于根据不同条件进行动态生成 SQL 语句的操作。通过使用静态语句和动态语句,可以使数据库操作更加灵活和可维护。

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

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

相关文章

kotlin as 和 is 的使用

kotlin 中有类型检测与类型转换章节&#xff0c;今天回顾看到这里记录下 详细的地址如下 类型检测与类型转换 Kotlin 官方文档 中文版 as 的功能是类型转换 val x: String y as String 这个y就是String 类型&#xff0c;不过&#xff0c;这个写法可能存在问题&#xff0c…

JS-WebAPIs-本地存储(五)

• 本地存储介绍 以前我们页面写的数据一刷新页面就没有了&#xff0c;是不是&#xff1f;随着互联网的快速发展&#xff0c;基于网页的应用越来越普遍&#xff0c;同时也变的越来越复杂&#xff0c;为了满足各种各样的需求&#xff0c;会经常 性在本地存储大量的数据&#xf…

运筹说 第107期 | 排队论创始人——阿格纳·克拉鲁普·爱尔朗

前面我们已经了解了非线性规划的相关内容&#xff0c;相信大家一定也有所收获&#xff0c;下面我们将带着大家继续了解排队论的相关内容&#xff0c;在本次文章中我们将一起走近排队论的奠基人——阿格纳克拉鲁普爱尔朗&#xff08;Agner Krarup Erlang&#xff09;&#xff0c…

基于Elasticsearch+Logstash+Kibana+Filebeat的日志收集分析及可视化

sudo rm /var/lib/dpkg/lock* sudo dpkg --configure -a apt update tail -f /var/log/car.log 1.1、项目概述 海量的业务应用&#xff0c;也带来了海量的日志数据&#xff0c;给业务应用的运维带来了新的挑战。例如&#xff0c;我们常用的网约车应用&#xff0c;单个平台…

I.MX8QM EC20适配

Android SDK&#xff1a;imx8_13.0.0_1.2.0(android 13 u-boot 2022.04 kernel 5.15.74) 一、内核修改 添加PID、VID。在“drivers/usb/serial/option.c”中可以看到EC25的PID和VID已经添加&#xff0c;而且这个EC25的PID和VID与EC20的相同&#xff0c;所以这里可以不用修改…

Go语言学习笔记:GORM 介绍及快速入门,简单查询

Go语言学习笔记&#xff1a;GORM 介绍及快速入门&#xff0c;简单查询 前言 GORM 是一个用 GoLang 语言编写的 ORM&#xff08;对象关系映射&#xff09;库。它被设计为开发者友好的方式来进行数据库操作。GORM 提供了一种高级的 API 来处理数据库的 CRUD&#xff08;创建、读…

Traceroute 详解

前言 如果您是网络管理员&#xff0c;系统管理员或任何系统操作团队的一员&#xff0c;那么您可能已经听说过名为TRACEROUTE的工具。默认情况下&#xff0c;它是大多数操作系统中都提供的非常方便的工具。 网络管理员和系统管理员在日常活动中最常使用此工具。它基本上是一个…

二叉树 - 堆 | 数据结构中的小技巧大作用

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构冒险记 ✅C语言进阶之路 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 一、堆的概念及介绍二、结构图示三、堆的代码实现&#xff08;图解&#xff09;3.1 创…

HackTheBox - Medium - Linux - Noter

Noter Noter 是一种中型 Linux 机器&#xff0c;其特点是利用了 Python Flask 应用程序&#xff0c;该应用程序使用易受远程代码执行影响的“节点”模块。由于“MySQL”守护进程以用户“root”身份运行&#xff0c;因此可以通过利用“MySQL”的用户定义函数来利用它来获得RCE并…

快速上手的AI工具-文心3.5vs文心4.0

前言 大家好晚上好&#xff0c;现在AI技术的发展&#xff0c;它已经渗透到我们生活的各个层面。对于普通人来说&#xff0c;理解并有效利用AI技术不仅能增强个人竞争力&#xff0c;还能在日常生活中带来便利。无论是提高工作效率&#xff0c;还是优化日常任务&#xff0c;AI工…

一篇文章看懂云渲染,云渲染是什么?云渲染如何计费?云渲染怎么选择

云渲染是近年兴起的新行业&#xff0c;很多初学者对它不是很了解&#xff0c;云渲染是什么&#xff1f;为什么要选择云渲染&#xff1f;它是如何计费的又怎么选择&#xff1f;这篇文章我们就带大家了解下吧。 云渲染是什么 云渲染简单来说就是把本地的渲染工作迁移到云端进行的…

以超市数据微案例-fineBI可视化分析

一、入门案例&#xff1a; 2.分析思路&#xff1a; 数据清晰界面中添加毛利额计算 **所以在新增步骤之后&#xff0c;必须点击保存并更新&#xff0c;否则可视化界面中无法使用最新的数据 4、数据可视化分析 1&#xff09;销售额最高的十大商品种类 为1-8月超市数据&#xff…

从0开始学习C++ 第二课:C++中的输入和输出(I/O)

第二课&#xff1a;C中的输入和输出&#xff08;I/O&#xff09; 学习目标&#xff1a; 理解C中的输入输出流的概念及其工作原理。学习如何使用iostream库中的cin和cout对象进行基本的输入输出操作。掌握格式化输出的方法&#xff0c;包括如何设置宽度、填充和精度。学习如何…

响应式编程

Reactive-Stream Reactive Streams是JVM面向流的库的标准和规范 1、处理可能无限数量的元素 2、有序 3、在组件之间异步传递元素 4、强制性非阻塞,背压模式 在Java中,常用的背压机制是响应式流编程中的反压(Reactive Streams Backpressure)。反压是一种生产者-消费者模型,…

【刷题笔记4】

动态规划题目汇总 斐波那契数列&#xff1a;1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;8&#xff0c;13…… 递归一把解决三类问题&#xff1a;1.数据定义是按照递归的&#xff08;斐波那契数列&#xff09;。2.问题解法是按递归算法实现的。 3.数据…

JUC-Java内存模型JMM

JMM概述 Java Meory Model java内存模型。在不同的硬件和不同的操作系统上&#xff0c;对内存的访问方式是不一样的。这就造成了同一套java代码运行在不同的操作系统上会出问题。JMM就屏蔽掉硬件和操作系统的差异&#xff0c;增加java代码的可移植性。这是一方面。 另一方面JM…

ios适配虚拟home键

在H5开发过程中遇到一个兼容性问题。iphone手机的虚拟home键会对屏幕底部的内容造成遮挡。要处理此问题&#xff0c;需要清楚安全区域这个概念。 安全区域 根据刘海和虚拟Home键&#xff0c;Apple为其设备提供了屏幕安全区域的视觉规范 竖屏&#xff1a;竖屏的时候&#xff…

UE5 C++学习笔记 常用宏的再次理解

1.随意创建一个类&#xff0c;他都有UCLASS()。GENERATED_BODY()这样的默认的宏。 UCLASS() 告知虚幻引擎生成类的反射数据。类必须派生自UObject. &#xff08;告诉引擎我是从远古大帝UObject中&#xff0c;继承而来&#xff0c;我们是一家人&#xff0c;只是我进化了其他功能…

基于asio的httpclient实现

基于Asio实现一个简易的httpclient Asio是C的一个高性能网络编程库&#xff0c;提供了跨平台的网络和底层I/O编程接口&#xff0c;包括tcp&#xff0c;udp等sockets通信&#xff0c;以及异步编程模型。它的设计目标是为C开发者提供一种简单、直接的方式来处理网络通信和并行I/…

矩阵和矩阵如何相乘?

矩阵与矩阵相乘遵循特定的数学规则。为了相乘&#xff0c;第一个矩阵的列数必须等于第二个矩阵的行数。矩阵乘法的结果是一个新矩阵&#xff0c;其行数等于第一个矩阵的行数&#xff0c;列数等于第二个矩阵的列数。矩阵乘法不满足交换律&#xff0c;即 AB≠BA。 例子&#xff…