ibatis中isnotnull和isnotempty的区别_typedef int Status

2022-11-08 17:49:23 浏览数 (1)

isPropertyAvailable和isNotEmpty 这个两个属性非常有用

isPropertyAvailable:入参有这个属性 isNotEmpty:入参的这个属性不为空

入参一般是一个封装了数据的DTO

如果希望一个属性无论为何值都符合条件则使用isPropertyAvailable 如果希望一个属性只是不为空的时候才符合条件就用isNotEmpty

update例子如下:

代码语言:javascript复制
<update id="partner.update.back">
update partner
<dynamic prepend="set">
<isPropertyAvailable property="domain_url" prepend=",">domain_url=#domain_url#</isPropertyAvailable>
<isNotNull property="user_name"><isNotEmpty prepend="," property="user_name">user_name=#user_name#</isNotEmpty></isNotNull>
</dynamic>
where partner_id=#partner_id#
</update>

select例子如下:

代码语言:javascript复制
select rownum sno,cott.* FROM cottonbaginfo cott where 1=1
<dynamic >
<isNotEmpty prepend=" and " property="grower">grower = 111</isNotEmpty>
</dynamic>

因为 是动态的,当你的条件不满足时就不会走,执行 select rownum sno,cott.* FROM cottonbaginfo cott where 1=1查询全部,当条件满足时就执行 。


当然了再mybatis中,以上两种方法并不适用,可以使用:

代码语言:javascript复制
<select id="selectApplyList"  resultType="java.util.Map">
    select *
    from tb_apply_info a left join tb_users_contact u on a.wx_id = u.wx_id
    <where>
      a.wx_id = #{wxId}
      <if test="lessonId != null">
        and lesson_id = #{lessonId}
      </if>
      <if test="applyState != null">
        and apply_state = #{applyState}
      </if>
      order by a.last_time desc
    </where>

将可能出现空值的参数,用if包起来。这样在mybatis中就可以达到上面两个方法的效果,进行非空参数的筛选。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185066.html原文链接:https://javaforall.cn

0 人点赞