复选条件 合并不同的条件的sql结果 mybtis

 

 

需求:

页面的时间状态需要复选,但是状态不是一个字段值就能判断,还需要根据当前时间判断,过期状态 的未过期状态。

 

活动有个开启时间与结束时间,同时有个状态值  1 已创建    2 已取消

前端对应的查询状态值:  1  未开始      2  活动进行中   3 活动结束       4已取消

其中的1 2  3 状态 是根据当前时间计算出来的状态,没法直接通过字段值来判断.只能合并不同条件下的sql.

这里用到的是 OR

 

还得是多选的情况下,可以通过sql 实现。

 

 

List<interger> status;

 

通过 foreach 标签循环,选择相应的状态,第一次循环下标不需要or   

<if test="param.status != null">
                    and (
                <foreach collection="param.status" item="status" index="index">
                    <if test="index != 0">
                        or
                    </if>
                    <if test="status ==1">
                     (cps.cps_code='distributed' and CURRENT_TIMESTAMP &lt;
                        mcn.mcn_start_datetime)
                    </if>
                    <if test="status ==2">
                          (cps.cps_code='distributed' and mcn.mcn_start_datetime &lt;= CURRENT_TIMESTAMP and CURRENT_TIMESTAMP &lt;= mcn.mcn_end_datetime)
                    </if>
                    <if test="status ==3">
                          (cps.cps_code='locked')
                    </if>
                    <if test="status ==4">
                           (cps.cps_code='verified')
                    </if>
                    <if test="status ==5">
                         (cps.cps_code='distributed' and CURRENT_TIMESTAMP > mcn.mcn_end_datetime)
                    </if>
                </foreach>
                    )
            </if>

 

posted @ 2023-02-17 14:51  未确定  阅读(27)  评论(0编辑  收藏  举报