今天用xml写sql出现问题,mapper入参为集合,其中要获取集合中每个元素的某个属性,这个属性也是个集合。
本来按照以前foreach写法,给集合项取个变量名,直接用这个变量名.属性名即可,但如果属性为集合好像就会报错。
错误代码示例:
<foreach collection="taskList" item="task" index="i" separator=" ) or ( 1=1 " >
<if test = "task.createtime != null">
and ttask.fcreatetime > #{task.createtime[0]}
and ttask.fcreatetime < #{task.createtime[1]}
</if>
</foreach>
修改为直接指定可以解决此问题。
正确代码示例:
<foreach collection="taskList" item="task" index="i" separator=" ) or ( 1=1 " >
<if test = "task.starttime != null">
and ttask.fstarttime > #{taskList[${i}].starttime[0]}
and ttask.fstarttime < #{taskList[${i}].starttime[1]}
</if>
</foreach>