Mybatis中 foreach 嵌套使用 if 标签对象取值问题
程序员文章站
2024-03-20 08:32:46
...
最近做项目过程中,涉及到需要在 Mybatis 中 使用 foreach 进行循环读取传入的查询条件,动态拼接SQL语句,接口传入的查询条件格式:{"advanceSearchList":[{"searchType":10,"searchText":"12"}]} ,根据我定义的参数格式,需要在 Mybatis中动态去循环读取 advanceSearchList 集合中的json对象,并根据 json对象中的 searchType 做不同的处理,需要在 foreach 中嵌套 if 标签进行判断使用。
大体格式:
<foreach collection="advanceSearchList" item="item" index="index" >
<if test="xxx == 10 ">
and abc like CONCAT('%', ddd, '%')
</if>
</foreach>
因为当前 foreach 中获取到的 item 是一个json对象,涉及到在 if 标签中获取当前对象中指定属性的值,一时脑抽,没有想起来取值办法,咨询万能的度娘没有得到满意的回复,经过自己傻瓜式的尝试,终于找到了取值方法,特此记录下:
解决办法:
Mybatis 在 foreach 标签中使用 if 标签获取对象属性方法:
直接通过 对象.属性 的方式获取!!!!对,你没看错,就是直接通过 对象.属性 的方式获取!!!
例如:当前foreach 循环获取的对象是 item,想要获取对象中的 searchType ,直接就是 item.searchType 即可……
代码如下:
<foreach collection="advanceSearchList" item="item" index="index" >
<if test="item.searchType == 10 ">
and abc like CONCAT('%', #{item.searchText}, '%')
</if>
</foreach>
好记性不如烂笔头,记下记下,防忘记