1.简单的map传参
map的键值传参只需要在sql中注明#key#,设置parameterClass="Map"即可
select id from table where name=#id#
2.list参数
像list,array参数一般结合in使用,即需要在语句中遍历出来,网上看了下一般使用<foreach>标签(使用foreach标签,参数#{}里面应该是和返回类型resultType实体中的属性对应,应该是报错原因),即
<foreach collection="list" item="item" index="index"
open="(" close=")" separator=",">
#{item}
</foreach>
其中collection是参数类型(list/array),但是在下毕竟小白一枚,出现错误:org.xml.sax.SAXParseException 必须声明元素类型 "foreach"。这就比较尴尬了,因为没找到解决原因,所以改换了另一种方式,设置parameterClass="java.util.List"然后使用<iterate>标签:
<iterate open="(" close=")" conjunction=",">
#list[]#
</iterate>
3.传的参数类型是map形式,但map中包含list集合
简单描述下:
Map<String, Object> param=new HashMap<String, Object>();
param.put("t_t1", time1);
List<String> ids=new ArrayList<>();
param.put("t_list", ids);
要是使用<foreach>的话,和 2 写法一样,但我写的报错也是一样……所以用<iterate>标签依然能够实现,parameterClass="Map"
<iterate open="(" close=")" conjunction="," property="t_list">
#t_list[]#
</iterate>