SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第三天)动态SQL

动态SQL—SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第三天)Mybatis的动态SQL操作

昨天我们深入学习了Mybatis的核心对象SqlSessionFactoryBuilder掌握MyBatis核心配置文件以及元素的使用,也掌握MyBatis映射文件及其元素的使用。那么今天我们需要掌握的是更加复杂的查询操作。

  1. 学会编写MyBatis中动态SQL
  2. 学会MyBatis的条件查询操作
  3. 学会MyBatis的更新操作
  4. 学会MyBatis的复杂查询操作

一、什么是动态SQL?

​ MyBatis 中的动态 SQL 是一种在 SQL 查询语句中根据不同的条件来动态生成不同的 SQL 片段的技术它允许你根据不同的情况来构建查询条件,避免写大量重复的 SQL 语句


动态SQL常用元素

元素 说明
< if > 判断语句,用于单条件判断
< choose >(< when >、< otherwise >) 相当于Java中的switch…case…default语句,用于多条件判断
< where > 简化SQL语句中where的条件判断
< trim > 可以灵活地去除多余的关键字
< set > 用于SQL语句的动态更新
< foreach > 循环语句,常用于in语句等列举条件中

动态 SQL 通常用于构建复杂的查询条件,例如:

  • 根据不同的条件组合进行查询,比如根据姓名、性别、年龄等多个条件进行筛选。
  • 根据不同的条件来动态排序查询结果。
  • 在更新操作中,根据传入的参数来选择性地更新某些字段。
  • 在插入操作中,根据不同的参数情况来选择性地插入某些字段。

MyBatis 提供了以下方式来实现动态 SQL:

  1. 使用 元素: 可以根据条件来动态生成 SQL 片段。例如:

    <select id="findByCondition" parameterType="map" resultType="User">
        SELECT * FROM users
        <where>
            <if test="name != null">
                AND name = #{name}
            if>
            <if test="age != null">
                AND age = #{age}
            if>
        where>
    select>
    

    代码解释如下: