场景:
多见于商品的多条件查询
原因:当mysql的WHERE语句中出现AND、OR时,AND 要么全部放在 OR 的前面,放在OR之后的AND条件将不会起作用。
怎么解决呢?
只要将你的or条件用()包起来,用作一个条件查询就可以了:
<if test="null != param.searchParam and '' != param.searchParam">
AND (sg.goods_name like concat('%', #{param.searchParam},'%')
OR sg.pinyin like concat('%', #{param.searchParam},'%')
OR sg.barcode like concat('%', #{param.searchParam},'%'))
</if>
<if test="null != param.unitId and '' !=param.unitId">
AND (sg.unit_name = #{param.unitName} or sg.unit_id = #{param.unitId})
</if>
仅此记录