isPropertyAvailable和isNotEmpty 这个两个属性非常有用
isPropertyAvailable:入参有这个属性 isNotEmpty:入参的这个属性不为空
入参一般是一个封装了数据的DTO
如果希望一个属性无论为何值都符合条件则使用isPropertyAvailable 如果希望一个属性只是不为空的时候才符合条件就用isNotEmpty
update例子如下:
<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例子如下:
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中,以上两种方法并不适用,可以使用:
<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