这次项目用到一个and和or混用的场景 , 因为用到多个or(循环), 没想到好的办法
最终转换成用 IN实现:
场景:
用left join链接多个表, 多个条件and筛选, 其中状态(state)条件筛选出多个可选状态的条目,
本来想用and 和 or 但是 or的条件是个数组参数, 需要遍历states , 可能0个可能多个, 拼了半天没有成功 , 最后发现用 IN 和FOREACH就可以了
DAO层接口 :
List<OrderInfoForm> selectOrdersByStatesSelective(
@Param(value="order")Order order,
@Param(value="states")Integer[] states);
Mybatis实现:
<select id="selectOrdersByStatesSelective" resultMap="AllResultMap" >
select
<include refid="All_Column_List" />
from order_list
LEFT JOIN product_method ON product_method.`code` = order_list.purchase_method
LEFT JOIN product_color ON product_color.`code` = order_list.color
LEFT JOIN product_guarantee ON produ