mybatis xml 条件写法
时间: 2023-11-09 13:00:25 浏览: 89
Mybaits通用的10种写法总结大全
MyBatis XML 中常见的条件写法有以下几种:
1. if 标签:根据条件判断是否需要拼接 SQL,可以嵌套在 where 标签中。
```
<select id="selectUser" resultType="User">
SELECT * FROM users
<where>
<if test="id != null">
AND id = #{id}
</if>
<if test="name != null and name != ''">
AND name like concat('%', #{name}, '%')
</if>
</where>
</select>
```
2. choose、when、otherwise 标签:类似于 Java 中的 switch 语句,根据条件选择不同的 SQL 语句。
```
<select id="selectUser" resultType="User">
SELECT * FROM users
<where>
<choose>
<when test="id != null">
AND id = #{id}
</when>
<when test="name != null and name != ''">
AND name like concat('%', #{name}, '%')
</when>
<otherwise>
AND state = '1'
</otherwise>
</choose>
</where>
</select>
```
3. where 标签:用于动态拼接 SQL 中的 WHERE 子句,会自动去除 WHERE 关键字前面的多余条件。
```
<select id="selectUser" resultType="User">
SELECT * FROM users
<where>
<if test="id != null">
AND id = #{id}
</if>
<if test="name != null and name != ''">
AND name like concat('%', #{name}, '%')
</if>
<if test="state != null">
AND state = #{state}
</if>
</where>
</select>
```
4. foreach 标签:用于遍历对象集合或数组,生成对应的 SQL 语句。
```
<select id="selectUserByIds" resultType="User">
SELECT * FROM users
WHERE id IN
<foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</select>
```
阅读全文