问题描述
mybatis的xml文件<insertid="batchInsert"parameterType="java.util.List"><foreachcollection="list"item="item">insertintoking(name,age)values(#{item.name,jdbcType=VARCHAR},#{item.age,jdbcType=NUMERIC})</foreach></insert>接口类中的方法publicvoidbatchInsert(List<BaseVO>list);测试类里调用SqlSessionFactorysessionFactory=newSqlSessionFactoryBuilder().build(newFileInputStream(newFile("src/mybatis-config.xml")));SqlSessionsession=sessionFactory.openSession();BatchDaobatchdao=session.getMapper(BatchDao.class);List<BaseVO>list=newArrayList<BaseVO>();for(inti=0;i<5;i++){BaseVOvo=newBaseVO();vo.setName("mybatis"+i);vo.setAge(i);list.add(vo);}batchdao.batchInsert(list);session.commit();session.close();//控制台报的错误SQL:insertintoking(name,age)values(?,?)insertintoking(name,age)values(?,?)insertintoking(name,age)values(?,?)
解决方案二:
Cause:java.sql.SQLException:ORA-00933:SQL命令未正确结束这是为什么
解决方案
解决方案三:
连这些好几个insert,当然会报语法错误,因为sql不支持吧虽然我没用过mybatis,但是还请看看是不是应该用分号隔开这些语句感觉你还是没写对配置文件
解决方案四:
解决方案五:
语法写错了。。
解决方案六:
应该写成这样:<insertid="batchInsert"parameterType="java.util.List">insertintoking(name,age)values<foreachcollection="list"item="item"index="index"separator=",">(#{item.name,jdbcType=VARCHAR},#{item.age,jdbcType=NUMERIC})</foreach></insert>
解决方案七:
还是不行啊,配置文件
解决方案八:
跟你使用的数据库有关,4楼的写法是mysql数据库,如果是oracle数据库的话,楼主在原来的语句后加个分号试试看