在做导入excel数据到数据库表中,对于前段传过来的数据需要循环插入,而前端传过来的listMap数据有哪些key值是不知道的,所以只好在mybatis里面两次循环来处理:
sql层:
<insert id="importData">
INSERT INTO ${tableName}
<foreach collection="columns" open="(" item="column" close=")" separator=",">
${column}
</foreach>
VALUES
<foreach collection="listData" item="datas" separator=",">
<foreach collection="datas" item="data" open="(" close=")" separator=",">
#{data}
</foreach>
</foreach>
</insert>
dao层:
/**
* @Description: 导入Excel数据
* @author: luyy
* @date 2021年2月19日 下午1:55:45
* @param tableName 表名
* @param columns 所有列
* @param listData 所有列值
* @return int
*/
int importData(@Param("tableName") String tableName, @Param("columns") List<String> columns, @Param("listData") List<Map<String,Object>> listData);
先将listData循环
<foreach collection="listData" item="datas" separator=",">
</foreach>
item里面就是每个map
再循环map,就能取出每一个值了
<foreach collection="datas" item="data" open="(" close=")" separator=",">
#{data}
</foreach>
这里的collection就是以上层循环的item作为集合来循环的。

本文介绍如何使用MyBatis通过两次循环处理未知key值的listMap数据,实现从Excel批量导入数据到数据库表的过程。
772

被折叠的 条评论
为什么被折叠?



