根据读取的csv文件将数据批量插入到对应的表,

人一定要靠自己 发布于 2015/01/17 13:57
阅读 750
收藏 0

想跟大家请教个问题:根据读取的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>
这样不行插入时提示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语法不对

我该怎么写,麻烦了您指出错误

加载中
0
w
wuxian

最好不要这样写,数据多了的话拼接的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中。您说的方法行不通啊
0
人一定要靠自己
不行啊,我是读取了个CSV文件,第一行是列,下面是一一对应的数据。让后我把列明与数据分别放到了两个集合,把表明和这两个集合放到了一个Map中。
返回顶部
顶部