专业的编程技术博客社区

网站首页 > 博客文章 正文

Mybatis动态SQL用法及使用场景(mybatis动态sql用法及使用场景手册)

baijin 2025-06-03 20:14:16 博客文章 8 ℃ 0 评论

#头条创作挑战赛#

ybatis的动态SQL执行原理已经在前面的回答中进行了解释。

下面是使用Mybatis动态SQL的示例,每个示例都有具体的代码说明:

使用<if>标签进行条件判断:

<select id="getUserByNameAndAge" resultType="User">
  SELECT * FROM users
  WHERE 1=1
  <if test="name != null">
    AND name = #{name}
  </if>
  <if test="age != null">
    AND age = #{age}
  </if>
</select>

使用<choose>、<when>和<otherwise>标签进行多条件判断:

<select id="getUserByCondition" resultType="User">
  SELECT * FROM users
  <choose>
    <when test="name != null">
      WHERE name = #{name}
    </when>
    <when test="age != null">
      WHERE age = #{age}
    </when>
    <otherwise>
      WHERE 1=1
    </otherwise>
  </choose>
</select>

使用<trim>标签来去除或添加一些SQL语句片段:

<update id="updateUser" parameterType="User">
  UPDATE users
  <trim prefix="SET" suffixOverrides=",">
    <if test="name != null">
      name = #{name},
    </if>
    <if test="age != null">
      age = #{age},
    </if>
  </trim>
  WHERE id = #{id}
</update>

使用<where>标签来动态生成WHERE条件:

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

使用<set>标签来动态生成UPDATE语句的SET部分:

<update id="updateUser" parameterType="User">
  UPDATE users
  <set>
    <if test="name != null">
      name = #{name},
    </if>
    <if test="age != null">
      age = #{age},
    </if>
  </set>
  WHERE id = #{id}
</update>

使用<foreach>标签来动态生成IN语句的参数:

<select id="getUsersByIds" resultType="User">
  SELECT * FROM users
  WHERE id IN
  <foreach collection="ids" item="id" open="(" separator="," close=")">
    #{id}
  </foreach>
</select>

使用${}来动态替换变量:

<select id="getUserByName" resultType="User">
  SELECT * FROM users
  WHERE name = '${name}'
</select>

使用<bind>标签来定义临时变量:

<select id="getUsersByName" resultType="User">
  <bind name="likeName" value="'%' + name + '%'" />
  SELECT * FROM users
  WHERE name LIKE #{likeName}
</select>

使用<sql>标签定义可重用的SQL片段:

<sql id="userColumns">id, name, age</sql>

<select id="getUser" resultType="User">
  SELECT <include refid="userColumns" /> FROM users
  WHERE id = #{id}
</select>

使用<script>标签将多个SQL语句拼接在一起:

<select id="getUserByCondition" resultType="User">
  <script>
    SELECT * FROM users
    WHERE 1=1
    <if test="name != null">
      AND name = #{name}
    </if>
    <if test="age != null">
      AND age = #{age}
    </if>
  </script>
</select>

以上是10个使用Mybatis动态SQL的示例,每个示例都展示了不同的用法和场景。希望这些示例能够帮助你理解Mybatis动态SQL的使用方法和用途。如果你需要进一步的解释或有其他问题,请随时提问。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表