org.apache.ibatis.annotations的select注解中,if标签和when标签有什么区别
时间: 2024-03-16 10:42:26 浏览: 77
在org.apache.ibatis.annotations的select注解中,if标签和when标签的作用是相同的,都是用于动态SQL语句的拼接。它们的区别在于使用场景和语法结构上。
if标签适用于在SQL语句中进行条件判断,语法结构类似于Java中的if语句,可以嵌套使用,例如:
```
@Select("SELECT * FROM user WHERE 1=1 "
+ "<if test='name != null'> AND name = #{name}</if>"
+ "<if test='age != null'> AND age = #{age}</if>")
List<User> selectByCondition(String name, Integer age);
```
when标签适用于在动态SQL语句中进行条件判断,语法结构类似于switch语句,可以在choose标签中使用,例如:
```
@Select("<script>"
+ "SELECT * FROM user "
+ "<where>"
+ "<choose>"
+ "<when test='name != null'> AND name = #{name}</when>"
+ "<when test='age != null'> AND age = #{age}</when>"
+ "<otherwise> AND status = 1</otherwise>"
+ "</choose>"
+ "</where>"
+ "</script>")
List<User> selectByCondition(String name, Integer age);
```
在这个例子中,if标签和when标签都可以实现条件判断,但是if标签只能在SQL语句中使用,when标签只能在动态SQL语句中使用。
阅读全文