我是靠谱客的博主 典雅服饰,这篇文章主要介绍mybatis的参数传入集合,现在分享给大家,希望可以做个参考。

1.select中传入map,map中包含list

后台代码:

List<String> bhList = ztryArchivesMapper.queryZjbhsByQcd(queryMap);
paramsMap.put("bhList", bhList);
		
PageHelper.startPage(pageNum, pageSize);
List<Ztry> list = ztryMapper.queryZtryListByCondition(paramsMap);

xml种的代码:

<if test="bmList != null and bmList.size != 0">
  AND zjhm in 
 <foreach close=")" collection="bmList" item="listItem" open="(" separator=",">
    #{listItem}
 </foreach>
</if>

解释:collection对应的就是map种list的key。

2.insert中传入list

xml中错误的写法:

<insert id="insertGz" parameterType="java.util.Map">
    insert into ${tableName} (user_id,field_id)
    values
	<foreach item="item" collection="ids" index="index" open="(" separator="," close=")">
		#{userId,jdbcType=VARCHAR},#{item,jdbcType=VARCHAR}
	</foreach>
 </insert>

这样写是不对的,我们想要的SQL语句是:

insert into table_name (user_id,field_id) values (1,2),(1,2),(1,2)

而上面这种会得到这样的结果:

insert into table_name (user_id,field_id) values (1,2,1,2,1,2)。

因为在foreach标签中的open和close都是针对循环体中的内容。

所以我们修改为正确的写法是:

 

  <insert id="insertGz" parameterType="java.util.Map">
    insert into ${tableName} (user_id,field_id)
    values
	<foreach item="item" collection="ids" index="index"  separator=",">
		(#{userId,jdbcType=VARCHAR},#{item,jdbcType=VARCHAR})
	</foreach>
  </inser

后端代码是:

Map<String,Object> params = new HashMap<String,Object>();
params.put("tableName", "tb_user_clue");
params.put("userId", userId);
params.put("ids", Arrays.asList(ids.split(",")));
gzArchivesService.insertGz(params);

 

最后

以上就是典雅服饰最近收集整理的关于mybatis的参数传入集合的全部内容,更多相关mybatis内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部