使用mybatis时经常需要在xml里写动态sql,发现foreach标签使用的问题 foreach标签使用 当Mapper传参是List<Map<String, Object>集合的形式时,不能直接使用参数名,会找不到对应的参数。 list类型的参数会特殊处理封装在map中,map的key就叫list 所以collection属性值只能是"list" // map
<foreach collection="array" item="employeeId" index="index" open="(" close=")" separator=","> #{employeeId} </foreach> </select> <!--Map:不单单forech中的collection属性是map.key,其它所有属性都是map.key,比如下面的departmentId --> <select id="getEmployeesMapParams" resultType="Employe...
解析Map<String, List<Object>>的参数,需要用到两层foreach标签,外层遍历map得到key,内层遍历value得到list的每一项 collection="mapFilterCondition.keys":遍历map的key,keys是固定的 item="key"返回的是key --> <foreach collection="mapFilterCondition.keys" open=" and " item="key" index="index" separat...
collection属性是在使用foreach的时候最关键的也是最容易出错的,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下3种情况: (1)如果传入的是单参数且参数类型是一个List的时候,collection属性值为list . (2)如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array ....
foreach标签,可以实现遍历集合类型(List, Array, Map)数据。该标签包含如下属性: - collection: [必选参数] 需要进行遍历对象对应的键:List对象默认使用list作为键,Array对象默认使用array作为键,Map对象没有默认的键(需要使用@Param注解完成Map对象的绑定,下文将详述),当集合(List, Array, Map)对象为所传实参POJO...
collection属性是在使用foreach的时候最关键的也是最容易出错的,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下3种情况: (1)如果传入的是单参数且参数类型是一个List的时候,collection属性值为list . (2)如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array ....
总结 1、resultType 定义为 “java.util.Map” 2、返回List> 的好处在于:不用再定义一个实体类对象了。 3、@Param(“dbIds”) List dbIds 表示给当前参数重新命名,方便foreach遍历
foreach元素的属性主要有item,index,collection,open,separator,close。 **item:**集合中元素迭代时的别名,该参数为必选。 index:在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选 open:foreach代码的开始符号,一般是(和close=")"合用。常用在in(),values()时。该参数可选 ...
</foreach></select>上述collection的值为ids,是传入的参数Map的key,对应的Mapper代码:1public List<Blog> dynamicForeach3Test(Map<String, Object> params);对应测试代码:@Test public void dynamicForeach3Test() { SqlSession session = Util.getSqlSessionFactory().openSession(); BlogMapper blogMapper = ...
return gson1.toJson(map); } 以下是sql代码 <insert id="saveNsbdSb" parameterType="java.util.List"> MERGE INTO WR_WATER_UP_M T USING ( <foreach collection="list" item="item" index="index" separator="union" > SELECT #{item.DECD,jdbcType=VARCHAR} AS DECD, ...