框架是springMvc+spring3.1+mybatis3.1.1
数据库是ms sqlserver2005
执行语句是:
<insert id="batchInserIcon"> INSERT INTO T_icon ( name,iconcls ) VALUES <foreach collection="list" item="item" index="index" separator=","> ( #{item.name}, #{item.iconCls} ) </foreach> </insert>
报的错误是:
二月 04 2013 16:16:12,399 DEBUG java.sql.Connection - ooo Using Connection [ ProxyConnectionID:1] 二月 04 2013 16:16:12,399 DEBUG java.sql.Connection - ==> Preparing: INSERT INTO T_icon ( name,iconcls ) VALUES ( ?, ? ) , ( ?, ? ) 二月 04 2013 16:16:12,399 DEBUG java.sql.PreparedStatement - ==> Parameters: 金将军(String), xxxx(String), haha(String), icon-ok(String) 二月 04, 2013 4:16:12 下午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet springServlet threw exception com.microsoft.sqlserver.jdbc.SQLServerException: ',' 附近有语法错误
请教如何解决?
我试过了,INSERTINTOTVALUES(),()这个是mysql的语法,oracle和mssql都不支持这个不会解析啊,只是提供了一个模板,往里面套,生成SQLmybatis不解析后再传到数据库执行,郁闷SQL有问题呗,看最后执行的SQL,估计和你separator=","这个有关系回复<aclass='referer'target='_blank'>@roywang:二月04201316:16:12,399DEBUGjava.sql.PreparedStatement-==>Parameters:金将军(String),xxxx(String),haha(String),icon-ok(String)回复<aclass='referer'target='_blank'>@roywang:二月04201316:16:12,399DEBUGjava.sql.Connection-==>Preparing:INSERTINTOT_icon(name,iconcls)VALUES(?,?),(?,?)语句是:insertintotable(column1,column2,column3)values(?,?,?),(?,?,?)mapper文件上的语句已经贴了执行最后mybatis生成的SQL,就知道了回复<aclass='referer'target='_blank'>@kakaximu:mybatis并没有任何具体数据库绑定的部分,它只是将你写的sql语句预编译,然后填充你在模版里面提供的参数,然后执行罢了。你开debug,看控制台上打印出来的预编译sql语句,估计就知道错在哪了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。