mybatis的choose标签的坑
时间: 2023-04-19 21:01:35 浏览: 98
Mybatis的choose标签容易出现坑,主要是因为在使用时需要注意以下几点:
1. choose标签必须包含至少一个when标签和一个otherwise标签,否则会抛出异常。
2. 当多个when标签条件都满足时,只会执行第一个满足条件的when标签,其他的when标签会被忽略。
3. 如果所有的when标签都不满足条件,才会执行otherwise标签。
4. 当使用了多个choose标签时,必须保证每个choose标签都有对应的结束标签,否则会抛出异常。
5. 在使用choose标签时,建议使用trim标签将多余的空格去掉,以避免出现不必要的错误。
总之,使用choose标签时需要注意细节,避免出现不必要的错误。
相关问题
mybatis choose标签
choose标签是MyBatis中的一个条件判断标签,类似于Java中的switch语句,用于根据不同的条件执行相应的代码块。choose标签包含多个when标签和一个otherwise标签,每个when标签都有一个test属性,用于指定条件表达式。当某个when标签的条件成立时,其内部的代码被执行;如果所有的when标签都不成立,那么otherwise标签内部的代码将被执行。
在MyBatis中,choose标签通常用于构建动态SQL语句,可以根据不同的条件拼接不同的SQL片段,以实现灵活的查询条件。
举个例子,如下面的代码片段所示:
<select id="getUserDy02" parameterType="map" resultType="user">
select * from user
<where>
<choose>
<when test="uname!=null and uname!=''">
uname like '%${uname}%'
</when>
<when test="sex!=null and sex!=''">
and sex=#{sex}
</when>
<otherwise>
1=1
</otherwise>
</choose>
</where>
</select>
在上面的例子中,当传入的参数中的uname不为空时,将拼接一个模糊查询条件;当传入的参数中的sex不为空时,将拼接一个精确查询条件;否则,将拼接一个恒定为true的条件。
mybatis choose when标签
MyBatis的choose-when标签用于在SQL映射文件中进行条件判断。它的语法类似于Java中的switch语句,可以根据不同的条件执行不同的SQL语句片段。
下面是choose-when标签的基本用法示例:
```xml
<select id="getUserList" resultType="User">
SELECT *
FROM user
WHERE
<choose>
<when test="gender == 'male'">
gender = 'M'
</when>
<when test="gender == 'female'">
gender = 'F'
</when>
<otherwise>
gender IS NULL
</otherwise>
</choose>
</select>
```
在上面的示例中,我们使用了choose标签来选择合适的SQL语句片段。当gender等于"male"时,会执行第一个when标签中的SQL语句;当gender等于"female"时,会执行第二个when标签中的SQL语句;否则,会执行otherwise标签中的SQL语句。
注意,在test属性中,我们使用了OGNL表达式来进行条件判断,可以根据需要灵活地编写条件。此外,choose标签可以嵌套使用,以实现更复杂的条件判断逻辑。
希望以上信息对你有帮助!如果你有任何其他问题,请随时提问。