@Insert("<script>" + " insert into ${tb} " +" <foreach collection=\"fields\" item=\"field\" separator = \",\" open=‘(‘ close=‘)‘> " + "`${field}`" +"</foreach>" + "values" +" <foreach collection=\"list\" item=‘mvo‘ index=\"list_index\" separator = \",\" > " +" <foreach collection=\"mvo.keys\" item=\"key\" open=‘(‘ close=‘)‘ separator = \",\">" +" #{list[${list_index}].[${key}]} " +"</foreach> " +"</foreach>" + "</script>") int insertBatch(@Param("list")List<Map<String,Object>> housingList,@Param("fields") Set<String> keys,@Param("tb") String table) throws Exception;
说明:
使用java注解事项嵌套循环和XML文件实现写法不一样
使用注解实现:
循环中要利用上层集合的子项,只能使用${}, 使用#{}符号表示占位符号,它取值时只会到 @Param()标注的变量中取值
核心是要明白 #{}和${} 的取值域和区别
${}取值可以取到循环中的子元素,也可以取到@Param注释的参数,${}直接注入
#{}只能取到@Param注释的参数,#{}表示占位 ?
原文:https://www.cnblogs.com/irobotzz/p/11358182.html