想跟大家请教个问题:根据读取的csv文件将数据批量插入到对应的表。
批量插入的语句在mybatis 的配置文件中该如何写?
<!-- 根据列明向指定表插入数据 --> <insert id="import" parameterType="java.util.HashMap" statementType="STATEMENT"> insert into ${tableName} (
<foreach collection="columeName" item="item" index="index" separator="," open="" close="">
${item}
</foreach>
)
<foreach collection="tableData" item="item" index="index" separator=";" >
values(${item})
</foreach>
</insert></pre> 这样不行插入时提示SQL语法不对
<!-- 根据列明向指定表插入数据 --> <insert id="import" parameterType="java.util.HashMap" statementType="STATEMENT"> insert into ${tableName} ( <foreach collection="columeName" item="item" index="index" separator="," open="" close=""> ${item} </foreach> )values <foreach collection="tableData" item="item" index="index" separator="union all" > select #{item} from dual </foreach> </insert>这样不行插入时提示SQL语法不对 我该怎么写,麻烦了您指出错误
最好不要这样写,数据多了的话拼接的sql太长,会报错什么的。
mybatis 还有一种批量插入方法:
SqlSession session=factory..openSession(ExecutorType.BATCH, false);
for(Map item:list){
session.insert("xxx.xxx.batchInsert",item);
}
if (session != null) { session.commit(); session.close(); }
######不行啊,我是读取了个CSV文件,第一行是列,下面是一一对应的数据。让后我把列明与数据分别放到了两个集合,把表明和这两个集合放到了一个Map中。您说的方法行不通啊######不行啊,我是读取了个CSV文件,第一行是列,下面是一一对应的数据。让后我把列明与数据分别放到了两个集合,把表明和这两个集合放到了一个Map中。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。