关于mybatis sql语句的错误笔记

<select id="getPushLst" parameterType="PushLstParm" resultMap="BaseResultMap">
     SELECT *
        FROM push_log
        <where>
            <if test=" pushContent != null and pushContent != '' ">
                and push_content like CONCAT('%',CONCAT(#{pushContent},'%'))
            </if>
            <if test=" pushType != null and pushType != '' ">
                and push_type = #{pushType}
            </if>
            <if test=" groupId != null and groupId != '' ">
                and FIND_IN_SET(#{groupId},group_ids)
            </if>
            <if test=" regStartTime != null and regStartTime != '' and  regEndTime != null and regEndTime != '' ">
                and create_time BETWEEN #{regStartTime} AND #{regEndTime}
            </if>
            <if test=" 1 == 1 ">
                and is_deleted = 0 or is_deleted is null
            </if>
        </where>
        order by create_time DESC LIMIT #{navOffset}, #{navPageSize}
  </select>

类似的必须有一个固定条件和其他条件组装的时候查询总是查询出所有的问题,其实关键点在于最后一个判断条件他是两个条件,我们平时习惯这么写但是在判断语句中并不能这么判断,正确的写法是吧最后一句改成如下:

      <if test=" 1 == 1 ">
          and (is_deleted = 0 or is_deleted is null)
      </if>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值