Mybatis中and和循环or混用 (or转换成in)

这次项目用到一个and和or混用的场景 , 因为用到多个or(循环), 没想到好的办法

最终转换成用 IN实现:

场景:

用left join链接多个表, 多个条件and筛选, 其中状态(state)条件筛选出多个可选状态的条目,

本来想用and 和 or 但是 or的条件是个数组参数, 需要遍历states , 可能0个可能多个, 拼了半天没有成功 , 最后发现用 IN 和FOREACH就可以了

DAO层接口 :

List selectOrdersByStatesSelective(
            @Param(value="order")Order order,
            @Param(value="states")Integer[] states);

Mybatis实现:

这里的重点是:

 
            
                #{state,jdbcType=BIGINT}
            

把多个state的or关系转化为 states in (state1,state2,state3...)

in中用foreach循环

你可能感兴趣的:(JAVA,MySQL,SSM)