复选条件 合并不同的条件的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 < mcn.mcn_start_datetime) </if> <if test="status ==2"> (cps.cps_code='distributed' and mcn.mcn_start_datetime <= CURRENT_TIMESTAMP and CURRENT_TIMESTAMP <= 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>