插入语句原型,
< insert id =" iterate_insert1 " parameterClass ="java.util.List" >
2. <![CDATA[
3. insert intowsjinag_test( col1 , col2 , col3 ) values
4. ]]>
5. < iterate conjunction ="," >
6. <![CDATA[
7. (#test[]. col1 #, # test []. col2 #, # test []. col3 #)
8. ]]>
9. </ iterate >
10. </ insert > 报错:
WARNING: EXCEPTION
javax.servlet.ServletException: org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred while applying a parameter map.
--- Check the IctProject.oppoInsertBatch-InlineParameterMap.
--- Check the statement (update failed).
--- Cause: java.sql.SQLException: ORA-00933: SQL 命令未正确结束 at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:459)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:459)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1054)
at org.eredlab.g4.rif.util.RequestFilter.doFilter(RequestFilter.java:119)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1045)
at org.eredlab.g4.rif.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:48)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1045)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:358)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:231)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:629)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:453)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
at org.mortbay.jetty.Server.handle(Server.java:303)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:452)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:735)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:636)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:349)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:320)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
< insert id =" iterate_insert1 " parameterClass ="java.util.List" >
2. <![CDATA[
3. insert intowsjinag_test( col1 , col2 , col3 ) values
4. ]]>
5. < iterate conjunction ="," >
6. <![CDATA[
7. (#test[]. col1 #, # test []. col2 #, # test []. col3 #)
8. ]]>
9. </ iterate >
10. </ insert > 报错:
WARNING: EXCEPTION
javax.servlet.ServletException: org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred while applying a parameter map.
--- Check the IctProject.oppoInsertBatch-InlineParameterMap.
--- Check the statement (update failed).
--- Cause: java.sql.SQLException: ORA-00933: SQL 命令未正确结束 at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:459)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:459)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1054)
at org.eredlab.g4.rif.util.RequestFilter.doFilter(RequestFilter.java:119)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1045)
at org.eredlab.g4.rif.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:48)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1045)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:358)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:231)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:629)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:453)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
at org.mortbay.jetty.Server.handle(Server.java:303)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:452)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:735)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:636)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:349)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:320)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
http://blog.csdn.net/baijianjun123456/article/details/48371213看起来没啥问题,可以把
insert intowsjinag_test( col1 , col2 , col3 ) values
这句 into后面加个空格试试看看
insert into wsjinag_test( col1 , col2 , col3 ) values
<insert id="batchInsert" parameterType="list">
INSERT INTO role_menu(id,role_id,menu_id ) VALUES
<foreach collection="list" item="obj" index="index" separator=",">
(uuid(),#{obj.roleId},#{obj.menuId})
</foreach>
</insert>我这么写的
insert into ${tableName}(login_name,login_id,NAS_id,login_date,logout_date,time_duration)
SELECT A.*
FROM(
<foreach collection="myList" item="item" index="index" separator="UNION ALL">
SELECT
#{item.login_name,jdbcType=VARCHAR} login_name,
#{item.login_ip,jdbcType=VARCHAR} login_ip,
#{item.NAS_ip,jdbcType=VARCHAR} NAS_ip,
#{item.login_date,jdbcType=DATE} login_date,
#{item.logout_date,jdbcType=DATE} logout_date,
#{item.time_duration,jdbcType=BIGINT} time_duration
FROM dual
</foreach>
)A
</insert>
按照这么写就行了,oracle的批量插入得用UNION ALL关键字,这里传进来的map包括表名和一个List<对象>,#{item.login_name},是对象中的login_name属性