解决Mybatis中foreach嵌套使用if标签对象取值的问题

网友投稿 1328 2022-11-02

解决Mybatis中foreach嵌套使用if标签对象取值的问题

解决Mybatis中foreach嵌套使用if标签对象取值的问题

目录foreach嵌套使用if标签对象取值问题大体格式解决办法代码如下Mybatis if 语句嵌套要求

foreach嵌套使用if标签对象取值问题

最近做项目过程中,涉及到需要在 Mybatis 中 使用 foreach 进行循环读取传入的查询条件,动态拼接SQL语句,接口传入的查询条件格式:{"advanceSearchList":[{"searchType":10,"searchText":"12"}]} ,根据我定义的参数格式,需要在 Mybatis中动态去循环读取 advanceSearchList 集合中的json对象,并根据 json对象中的  searchType 做不同的处理,需要在 foreach 中嵌套 if 标签进行判断使用。

大体格式

and abc like CONCAT('%', ddd, '%')

因为当前 foreach 中获取到的 item 是一个json对象,涉及到在 if 标签中获取当前对象中指定属性的值,一时脑抽,没有想起来取值办法,咨询万能的度娘没有得到满意的回复,经过自己傻瓜式的尝试,终于找到了取值方法,特此记录下:

解决办法

Mybatis 在 foreach 标签中使用 if 标签获取对象属性方法:

直接通过 对象.属性 的方式获取!!!!对,你没看错,就是直接通过  对象.属性 的方式获取!!!

例如:当前foreach 循环获取的对象是 item,想要获取对象中的 searchType ,直接就是 item.searchType 即可……

代码如下

and abc like CONCAT('%', #{item.searchText}, '%')

Mybatis if 语句嵌套

在使用mybatis的时候,可以在 if 标签下面加上if标签。

比如要对这个sql语句进行改进。

select a.* from emp a

inner join dept b

on a.deptno = b.no

where b.place= #{place}

要求

如果 传入的 地点 是 North Korea 那么 符合 a中的条件也可以。

a.male = 'M' or a.age bewteen 20 and 30

where语句可以这么写

select * from emp e

  

    and

     (

    b.place = #{place}

    

    ohttp://r a.male = 'M' or a.ge between 20 and 30 )

    

  

注意里面的括号。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Marmaray是一个通用的Hadoop数据提取和扩散框架和库
下一篇:H5和Android通信框架,让H5和Android相互调用更加简单
相关文章

 发表评论

暂时没有评论,来抢沙发吧~