mybatis isNotEmpty
时间: 2024-07-23 17:00:51 浏览: 244
MyBatis 的 `isNotEmpty` 是一个动态SQL标签,用于查询字段是否非空(即不等于null或非空字符串)。当你在编写 SQL 映射文件(例如 XML 或者注解形式)时,可以使用它来避免硬编码条件判断,使代码更简洁。
例如,如果你有一个用户表,想检查用户名是否为空,你可以这样做:
```xml
<select id="selectUser" resultType="User">
SELECT * FROM user WHERE username <if test="username.isNotEmpty">IS NOT NULL AND </if>username = #{username}
</select>
```
或者在注解形式下:
```java
@Select("SELECT * FROM user WHERE username != #{username, javaType=String, jdbcType=VARCHAR, trim=true, ifEmpty=''}" + (conditionExpression ? " AND conditionExpression" : ""))
List<User> getUsers(String username, String conditionExpression);
```
在这里,如果 `username` 参数是空或者null,`isNotEmpty` 标签将不会出现在生成的实际SQL中,从而避免了无效查询。
相关问题
mybatis-plus的ObjectUtils.isNotEmpty()
MyBatis-Plus 是一款 MyBatis 的增强工具,在 MyBatis 的基础上增加了很多实用的功能,其中 ObjectUtils 是其核心工具类之一,提供了一些对象判断和转换的方法。
ObjectUtils.isNotEmpty() 方法是用来判断对象是否不为空的方法,其内部实现会进行如下判断:
1. 如果传入的对象为 null,则返回 false;
2. 如果传入的对象为 CharSequence 类型,则调用其 length() 方法判断长度是否大于 0;
3. 如果传入的对象为 Collection 类型,则调用其 size() 方法判断大小是否大于 0;
4. 如果传入的对象为 Map 类型,则调用其 size() 方法判断大小是否大于 0;
5. 如果传入的对象为 数组 类型,则调用其 length 属性判断长度是否大于 0;
6. 如果传入的对象为其他类型,则返回 true。
因此,使用 ObjectUtils.isNotEmpty() 方法可以方便地判断对象是否不为空。
mybatis中动态update中的isNotEmpty和isNotNull标签
在 MyBatis 中,动态 SQL 是指根据条件动态生成 SQL 语句,其中包括动态更新语句。在动态更新语句中,我们可能需要根据不同的情况判断某个属性是否为空或者是否为 null,这时就需要用到 isNotEmpty 和 isNotNull 标签。
isNotEmpty 标签表示只有在属性不为空时才会生成对应的 SQL 语句,它的语法如下:
```
<update id="updateUser" parameterType="User">
update user
<set>
<if test="userName != null and userName != ''">
user_name = #{userName},
</if>
<if test="password != null and password != ''">
password = #{password},
</if>
</set>
where id = #{id}
</update>
```
在上面的例子中,只有当 userName 和 password 不为空时才会生成对应的 SQL 语句。
isNotNull 标签表示只有在属性不为 null 时才会生成对应的 SQL 语句,它的语法和 isNotEmpty 类似,只需要把 test 属性的条件改为属性不为 null 即可,示例如下:
```
<update id="updateUser" parameterType="User">
update user
<set>
<if test="userName != null">
user_name = #{userName},
</if>
<if test="password != null">
password = #{password},
</if>
</set>
where id = #{id}
</update>
```
在上面的例子中,只有当 userName 和 password 不为 null 时才会生成对应的 SQL 语句。
阅读全文