iBatis的动态SQL标签
时间: 2024-01-11 13:04:41 浏览: 21
iBatis的动态SQL标签包括以下几种:
1. `<if>`标签:用于判断条件是否成立,如果成立则执行其中的SQL语句。示例代码:
```
<select id="selectPerson" parameterType="int" resultType="Person">
SELECT * FROM person
WHERE 1=1
<if test="id != null">
AND id = #{id}
</if>
<if test="name != null">
AND name = #{name}
</if>
</select>
```
2. `<choose>`标签:类似于Java中的switch语句,用于根据不同条件选择不同的SQL语句执行。示例代码:
```
<select id="selectPerson" parameterType="int" resultType="Person">
SELECT * FROM person
<choose>
<when test="id != null">
WHERE id = #{id}
</when>
<when test="name != null">
WHERE name = #{name}
</when>
<otherwise>
WHERE 1=1
</otherwise>
</choose>
</select>
```
3. `<where>`标签:用于动态拼接WHERE语句,自动去除多余的AND和OR关键字。示例代码:
```
<select id="selectPerson" parameterType="int" resultType="Person">
SELECT * FROM person
<where>
<if test="id != null">
AND id = #{id}
</if>
<if test="name != null">
AND name = #{name}
</if>
</where>
</select>
```
4. `<foreach>`标签:用于循环遍历集合或数组,动态生成SQL语句。示例代码:
```
<insert id="insertPersons" parameterType="List">
INSERT INTO person (id, name)
VALUES
<foreach collection="list" item="person" separator=",">
(#{person.id}, #{person.name})
</foreach>
</insert>
```
5. `<set>`标签:用于动态拼接SET语句,用于更新操作。示例代码:
```
<update id="updatePerson" parameterType="Person">
UPDATE person
<set>
<if test="name != null">
name = #{name},
</if>
<if test="age != null">
age = #{age},
</if>
</set>
WHERE id = #{id}
</update>
```
以上是iBatis中常用的动态SQL标签,可以根据实际需求选择适当的标签来组合使用。