mybatis(10) : 判断是否等于空

等于空

<if test="p1 == null">
           
</if>

不等于空

<if test="p1 != null">
            
</if>

 

 

疑问: p1=100,查询结果是1,为什么不是2 ? 待处理...

   <select id="test" resultType="java.lang.String">
        select
        <if test="p1 == null or p1 = ''">
            1
        </if>
        <if test="p1 != '' and p1 != null">
            2
        </if>
    </select>

 

 

END。

### 判断字符串是否或 `null` 的方法 在 MyBatis 中处理字符串是否或 `null` 可以通过多种方式来实现。通常情况下,在 SQL 映射文件中使用 `<if>` 或者自定义函数来进行判断。 #### 使用 `<if>` 标签进行条件判断 可以在 XML 文件中的 SQL 语句里加入逻辑判断,如下所示: ```xml <select id="selectUsers" parameterType="map" resultType="User"> SELECT * FROM users WHERE 1=1 <if test="username != null and username != '' "> AND username = #{username} </if> </select> ``` 上述代码片段展示了当参数 `username` 为 `null` 并且串时才将其作为查询条件的一部分[^2]。 #### 自定义 Java 方法并注册到 MyBatis 另一种更灵活的方式是在实体类或者工具类里面编写静态方法用于检测字符串的有效性,之后再把该方法设置成 MyBatis 能识别的语言驱动程序的一部分。例如: ```java public final class StringUtils { private StringUtils() {} public static boolean isEmpty(String str){ return str == null || "".equals(str.trim()); } } ``` 接着需要修改 MyBatis 配置文件使其支持此功能: ```yaml mybatis: configuration: default-scripting-language: org.apache.ibatis.scripting.ognl.OgnlLanguage ``` 最后一步就是在 Mapper 接口处调用这个新添加的功能: ```java @Select({ "<script>", "SELECT * FROM users", "<where>", "<if test='StringUtils.isEmpty(username)' >AND username IS NULL OR LENGTH(TRIM(username)) = 0</if>", "<if test='!StringUtils.isEmpty(username)' >AND username=#{username}</if>", "</where>", "</script>" }) List<User> findUsers(@Param("username") String username); ``` 这种方法允许更加复杂的业务逻辑被封装起来,并且提高了可维护性和重用率[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值