MyBatis-plus动态查询
<select id="getUnTaskSituation" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM finance_model_son_detail AS t LEFT JOIN finance_model_detail AS fmd ON t.model_id = fmd.id
WHERE t.is_del=0 AND fmd.active_close=0 AND fmd.is_del=0
<if test="null!=query.executeCodes">
AND t.manager_code in
<foreach item="i" index="index" collection="query.executeCodes" open="(" separator="," close=")">
#{i}
</foreach>
</if>
<if test=" null != query.managerCodes and query.managerCodes.length > 0">
AND fmd.manager_code in
<foreach item="i" index="index" collection="query.managerCodes" open="(" separator="," close=")">
#{i}
</foreach>
</if>
<if test="query.startTime!= null and query.startTime!= ''">
AND t.create_time >= CONCAT(#{query.startTime},' 00:00:00')
</if>
</select>
其中query.executeCodes是一个String数组,判断条件不够充足,从 <if test="null!=query.executeCodes">
改为<if test=" null != query.managerCodes and query.managerCodes.length > 0">
让我一顿好找。
还有一次,是
<select id="getUnTaskSituation" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM finance_model_son_detail AS t LEFT JOIN finance_model_detail AS fmd ON t.model_id = fmd.id
//由于后面AND不一定全部存在,所以用1=1表示
WHERE 1=1 AND fmd.is_del=0
<if test="null!=query.executeCodes">
AND t.manager_code in
<foreach item="i" index="index" collection="query.executeCodes" open="(" separator="," close=")">
#{i}
</foreach>
</if>
</select>
还有一次是在MySQL语句习惯性地加了封号,实际上封号不应该有。
因此在MyBatis-plus种
//如果数组判空
<if test=" null != query.managerCodes and query.managerCodes.length > 0">`
//字符串判空:
<if test="query.startTime!= null and query.startTime!= ''">