赞
踩
目录
经常会有这种需求,查询条件的入参是由逗号(或空格,分号,竖线等)分隔,即需要拆分。
例如查用户订单,入参 "0011,0012,0013,0014",我们会先在业务代码里 split ,再循环去数据库查。
而在mybatis里,xml里可以用java的方法:即在foreach标签的collection属性里,值直接调用split。
代码如下:
- <if test="ids != null and ids !='' ">
- AND id in
- <foreach collection="ids.split(',')" item="id" separator="," open="(" close=")">
- #{id}
- </foreach>
- </if>
foreach 说明:
collection:常用List、数组、map
item:集合中元素迭代时的别名,该参数为必选。#{}获取值用这个别名
open:foreach代码的开始符号,一般是(,和close=")"合用。常用在in(),values()时。该参数可选close: foreach代码的关闭符号,一般是)和open="("合用。常用在in(),values()时。该参数可选。
separator:元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。index:迭代过程中每次迭代到的位置(下标)。在list和数组中,index是元素的序号,在map中index是元素的key,item是元素的value,该参数可选
扩展知识:
OGNL表达式
以下是mybatis其他常见问题
1.入参list时,foreach取不到值,报错
2.if判断没进逻辑,例如<if test = " org != '1' ">
3.where条件里if标签的and报错
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。