mybatis的xml文件中的if和else标签怎么用,代码举例
时间: 2024-02-28 19:56:06 浏览: 85
好的,下面是一个具体的示例:
假设我们有一个User表,包含id、name、age和gender四个字段,现在需要根据传入的参数构建查询语句,查询结果可以根据条件过滤。如果传入的参数中包含name,则根据name过滤,如果没有name,则根据age过滤,如果name和age都没有,则查询所有数据。在这个场景下,我们可以使用Mybatis的if和else标签来实现动态SQL的构建。
UserMapper.xml文件内容如下:
```
<select id="selectUsers" parameterType="map" resultType="User">
SELECT * FROM user
<where>
<if test="name != null">
AND name = #{name}
</if>
<if test="name == null and age != null">
AND age = #{age}
</if>
</where>
</select>
```
上面的代码中,我们使用了if标签和test属性来实现条件判断。如果传入的参数中包含name,则AND name = #{name}这句SQL语句会被拼接到原始的SQL语句中,否则这句SQL语句不会被拼接。如果传入的参数中不包含name但包含age,则AND age = #{age}这句SQL语句会被拼接到原始的SQL语句中。
如果我们需要添加一个else分支,用于处理name和age都没有的情况,可以使用otherwise标签,代码如下:
```
<select id="selectUsers" parameterType="map" resultType="User">
SELECT * FROM user
<where>
<if test="name != null">
AND name = #{name}
</if>
<if test="name == null and age != null">
AND age = #{age}
</if>
<otherwise>
AND 1=1
</otherwise>
</where>
</select>
```
上面的代码中,我们使用了otherwise标签来处理name和age都没有的情况。在这个分支中,我们添加了一个无条件的SQL语句AND 1=1,这个SQL语句不会对查询结果产生影响,但可以保证查询条件的正确性。
阅读全文