练习常用动态sql的标签<if>、<where>、<set>、<trim>、<foreach>
时间: 2023-08-06 21:05:48 浏览: 114
好的,下面是这些常用动态SQL标签的用法:
1. `<if>` 标签
`<if>` 标签用于在 SQL 语句中添加条件判断。例如:
```xml
<select id="getUserList" resultType="User">
SELECT * FROM user
<where>
<if test="name != null">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
```
上面的 SQL 查询语句中,如果传入了 `name` 和 `age` 参数,则会根据这两个参数进行查询,否则不会加入对应的条件。
2. `<where>` 标签
`<where>` 标签用于动态生成 SQL 语句中的 WHERE 子句。例如:
```xml
<select id="getUserList" resultType="User">
SELECT * FROM user
<where>
<if test="name != null">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
```
上面的 SQL 查询语句中,如果传入了 `name` 和 `age` 参数,则会根据这两个参数进行查询,否则不会加入 WHERE 子句。
3. `<set>` 标签
`<set>` 标签用于动态生成 SQL 语句中的 SET 子句,通常用于更新操作。例如:
```xml
<update id="updateUser" parameterType="User">
UPDATE user
<set>
<if test="name != null">
name = #{name},
</if>
<if test="age != null">
age = #{age},
</if>
</set>
WHERE id = #{id}
</update>
```
上面的 SQL 更新语句中,如果传入了 `name` 和 `age` 参数,则会根据这两个参数更新对应的字段,否则不会加入 SET 子句。
4. `<trim>` 标签
`<trim>` 标签用于动态生成 SQL 语句中的任何部分,可以用于去除生成 SQL 语句中的不必要的逗号或 AND/OR 等关键字。例如:
```xml
<select id="getUserList" resultType="User">
SELECT * FROM user
<where>
<trim prefix="AND" prefixOverrides="OR">
<if test="name != null">
OR name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</trim>
</where>
</select>
```
上面的 SQL 查询语句中,`<trim>` 标签会将生成的 SQL 语句中的 `OR` 关键字前缀去除,同时去除不必要的逗号。
5. `<foreach>` 标签
`<foreach>` 标签用于动态生成 SQL 语句中的 IN 子句,通常用于查询或删除操作。例如:
```xml
<select id="getUserList" resultType="User">
SELECT * FROM user
WHERE id IN
<foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</select>
```
上面的 SQL 查询语句中,`<foreach>` 标签会根据传入的 `ids` 参数生成对应的 IN 子句,例如 `WHERE id IN (1, 2, 3)`。
阅读全文