MyBatis XML 映射文件中的 SQL 语句可以分为动态语句和静态语句

目录

静态查询:

动态查询:

静态更新:

动态更新:

静态删除:

动态删除:

[动态语句和静态语句在 MyBatis 中的作用如下:](#动态语句和静态语句在 MyBatis 中的作用如下:)


静态查询:

静态查询是指在 SQL 语句中执行固定的查询操作,查询的条件和内容是预先确定的,不会随着用户输入或其他条件的改变而改变。以下是一个静态查询的示例:

XML 复制代码
<select id="selectUsersByRole" resultType="com.example.goods_admin.entity.User">
  SELECT * FROM user
  WHERE name= 'admin'
</select>

在上述的例子中,查询语句中的条件 name= 'admin' 是固定的,无论用户输入什么内容,都会查询出 "name" 字段等于 "admin" 的用户信息。

动态查询:

动态查询是指在 SQL 语句中根据用户输入或其他条件改变查询的操作。查询的条件和内容是根据用户的输入或其他条件动态生成的。以下是一个动态查询的示例:

XML 复制代码
    <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 语句中执行固定的更新操作,更新的内容和条件是预先确定的,不会随着用户输入或其他条件的改变而改变。以下是一个静态更新的示例:

XML 复制代码
<update id="updateUserStatus" parameterType="com.example.goods_admin.entity.User">
  UPDATE user
  SET status = 'active'
  WHERE id = #{id}
</update>

在上述的例子中,更新语句中的条件 id = #{id} 是固定的,无论用户输入什么内容,都会更新 "id" 字段等于给定参数 "id" 的用户状态为 "active"。

动态更新:

动态更新是指在 SQL 语句中根据用户输入或其他条件改变更新的操作。更新的内容和条件是根据用户的输入或其他条件动态生成的。以下是一个动态更新的示例:

XML 复制代码
<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 语句中执行固定的删除操作,删除的条件是预先确定的,不会随着用户输入或其他条件的改变而改变。以下是一个静态删除的示例:

XML 复制代码
<delete id="deleteUserById" parameterType="java.lang.Integer">
  DELETE FROM user
  WHERE id = #{id}
</delete>

在上述的例子中,删除语句中的条件 id = #{id} 是固定的,无论用户输入什么内容,都会删除 "id" 字段等于给定参数 "id" 的用户。

动态删除:

动态删除是指在 SQL 语句中根据用户输入或其他条件改变删除的操作。删除的条件是根据用户的输入或其他条件动态生成的。以下是一个动态删除的示例:

XML 复制代码
<delete id="deleteUser" parameterType="com.example.goods_admin.entity.User">
  DELETE FROM user
  WHERE 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 语句的操作。通过使用静态语句和动态语句,可以使数据库操作更加灵活和可维护。

相关推荐
Decay__15 小时前
22_MySQL 运维自动化平台 —— 部署编排 + 监控 + 巡检 + 告警 + 工单闭环一体化
运维·数据库·sql·mysql·架构
CoderYanger16 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)
java·数据库·spring·面试·职场和发展·java-ee·mybatis
Decay__17 小时前
21_MySQL 优化案例集 —— 慢 SQL 优化、索引重构与参数调整收益对比
运维·数据库·sql·mysql·架构
挖掘狂人18 小时前
MySQL 深分页优化:limit 100000, 10 慢在哪,怎么救
后端·sql·mysql
codigger18 小时前
MySQL 深分页优化:limit 100000, 10 慢在哪,怎么救
数据库·sql·mysql·程序员
Francek Chen18 小时前
【大数据处理与分析】数据仓库Hive:09 Hive 编程实践
大数据·数据仓库·hive·hadoop·sql
麦壳饼18 小时前
SonnetDB 5.0 正式发布:增强 SQL 与事务,开放九模型 MCP 读写
数据库·人工智能·sql·sonnetdb
Decay__1 天前
18_MySQL 智能巡检方案 —— 巡检项清单 / 一键巡检脚本 / 健康评分
运维·数据库·sql·mysql·架构
凤凰院凶涛QAQ1 天前
《MySQL内核拆解:从SQL到InnoDB》(四) : 联合查询 & 视图
数据库·sql·mysql
Decay__2 天前
19_MySQL 告警与自动化运维 —— 告警分级收敛 / Webhook / 定时巡检 / 脚本库
运维·数据库·sql·mysql·架构