在 MyBatis 中,<script>
标签用于在 XML 映射文件中编写动态 SQL。通过使用 <script>
标签,可以在 SQL 语句中加入条件判断、循环和其他动态内容,从而生成灵活的 SQL 查询。<script>
标签的常见用法包括 if
、choose
、foreach
等。
以下是几个常见的示例:
1. 使用 <if>
标签
<if>
标签用于根据条件动态生成 SQL 片段。
<select id="selectUser" resultType="User">
SELECT * FROM users
WHERE 1=1
<if test="username != null">
AND username = #{username}
</if>
<if test="age != null">
AND age = #{age}
</if>
</select>
2. 使用 <choose>
标签
<choose>
标签类似于 switch
语句,用于在多种可能性中选择一种。
<select id="selectUserByCondition" resultType="User">
SELECT * FROM users
WHERE 1=1
<choose>
<when test="username != null">
AND username = #{username}
</when>
<when test="age != null">
AND age = #{age}
</when>
<otherwise>
AND status = 'ACTIVE'
</otherwise>
</choose>
</select>
3. 使用 <foreach>
标签
<foreach>
标签用于遍历集合类型参数(如列表、数组等),动态生成 SQL。
<select id="selectUsersByIds" resultType="User">
SELECT * FROM users
WHERE id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
4. 使用 <where>
标签
<where>
标签自动处理 SQL 语句中的 AND
或 OR
逻辑。
<select id="selectUser" resultType="User">
SELECT * FROM users
<where>
<if test="username != null">
username = #{username}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
5. 使用 <trim>
标签
<trim>
标签可以自定义去除或添加 SQL 片段的前后缀。
<select id="selectUser" resultType="User">
SELECT * FROM users
<trim prefix="WHERE" prefixOverrides="AND | OR">
<if test="username != null">
AND username = #{username}
</if>
<if test="age != null">
AND age = #{age}
</if>
</trim>
</select>
这些例子展示了如何在 MyBatis 的 XML 映射文件中使用 <script>
标签来编写灵活的 SQL 语句。