mybatis中如何判断非空和字符串呢?
下文笔者讲述mybatis中判断非空和非字符串的方法及示例分享,如下所示
判断`name`参数是否为空
判断`name`参数是否为字符串
mybatis 判断非空及非空字符串的实现思路
借助mybatis中的if 关键字即可实现 非空判断例
判断`name`参数是否为空
<select id="findUsersByName" parameterType="map" resultType="User">
SELECT FROM users
WHERE 1=1
<if test="name != null and name != ''">
AND name = {name}
</if>
</select>
`<if test="name != null and name != ''">`
用于判断`name`参数
是否为空或空字符串
如果不为空
则将`name`参数
包含在SQL查询中
判断参数是否为字符串
MyBatis本身
并不直接提供判断参数是否为字符串的内置方法
但你可以通过类型检查和条件判断来实现这一点。
例判断`name`参数是否为字符串
<select id="findUsersByName" parameterType="map" resultType="User">
SELECT FROM users
WHERE 1=1
<if test="name != null and name instanceof java.lang.String and name != ''">
AND name = {name}
</if>
</select>
代码说明
MyBatis之OGNL表达式并不直接支持`instanceof`操作符 因此 更常见的做法是确保在调用MyBatis 方法时传递的参数类型是正确的。使用 `choose`、`when` 和 `otherwise` 如果你需要更复杂的条件判断,可以使用 `<choose>`、`<when>` 和 `<otherwise>` 标签。 例
使用`choose`、`when`和`otherwise`
<select id="findUsersByCondition" parameterType="map" resultType="User">
SELECT FROM users
WHERE 1=1
<choose>
<when test="name != null and name != ''">
AND name = {name}
</when>
<when test="age != null">
AND age = {age}
</when>
<otherwise>
AND status = 'active'
</otherwise>
</choose>
</select>
代码说明
`<choose>`标签 用于实现类似 `switch`逻辑 `<when>` 标签用于条件判断 `<otherwise>` 标签用于默认情况。
总结说明
- 判断非空:
使用`<if test="param != null and param != ''">`
来判断参数是否为空或空字符串。
- 判断类型:
确保在调用 MyBatis 方法时传递的参数类型是正确的
而不是在 MyBatis 的 XML 文件中进行类型检查。
- 复杂条件:
使用`<choose>`、`<when>`
和 `<otherwise>`标签来实现更复杂的条件逻辑。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


