spring + ibatis错误总结org.springframework.web.util.NestedServletException: Request processing failed; n

来源:互联网 发布:上知教育老师培训多久 编辑:程序博客网 时间:2024/05/16 23:34
 
当我用spring + ibatis 时出现下面错误
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'union where id = 1' at line 1    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)    at com.mysql.jdbc.Util.getInstance(Util.java:384)    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498)    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568)    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2113)    at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1364)    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:989)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)    at java.lang.reflect.Method.invoke(Method.java:597)    at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:45)    at $Proxy20.execute(Unknown Source)    at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:39)    at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:55)    at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:41)    at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:216)    at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:95)    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:75)    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:69)    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:40)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)    at java.lang.reflect.Method.invoke(Method.java:597)    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:338)    at $Proxy13.selectOne(Unknown Source)    at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:154)    at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:70)    at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:38)    at $Proxy14.selectByPrimaryKey(Unknown Source)    at com.tuan800.exercise.model.dao.impl.UnionDaoImpl.getUnionById(UnionDaoImpl.java:43)    at com.tuan800.exercise.model.dao.impl.UnionDaoImpl$$FastClassByCGLIB$$1e93046b.invoke(<generated>)    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)    at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688)    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)    at com.tuan800.exercise.model.dao.impl.UnionDaoImpl$$EnhancerByCGLIB$$9160a017.getUnionById(<generated>)    at com.tuan800.exercise.service.impl.UnionServiceImpl.getUnionById(UnionServiceImpl.java:31)    at com.tuan800.exercise.controller.GridController.login(GridController.java:37)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)    at java.lang.reflect.Method.invoke(Method.java:597)    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175)    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421)    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:774)    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)    at org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:195)    at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:159)    at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:141)    at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:90)    at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:417)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)    at java.lang.Thread.run(Thread.java:619)2011-12-13 10:36:43 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() for servlet default threw exceptioncom.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'union where id = 1' at line 1    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)    at com.mysql.jdbc.Util.getInstance(Util.java:384)    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566)    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498)    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568)    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2113)    at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1364)    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:989)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)    at java.lang.reflect.Method.invoke(Method.java:597)    at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:45)    at $Proxy20.execute(Unknown Source)    at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:39)    at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:55)    at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:41)    at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:216)    at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:95)    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:75)    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:69)    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:40)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)    at java.lang.reflect.Method.invoke(Method.java:597)    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:338)    at $Proxy13.selectOne(Unknown Source)    at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:154)    at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:70)    at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:38)    at $Proxy14.selectByPrimaryKey(Unknown Source)    at com.tuan800.exercise.model.dao.impl.UnionDaoImpl.getUnionById(UnionDaoImpl.java:43)    at com.tuan800.exercise.model.dao.impl.UnionDaoImpl$$FastClassByCGLIB$$1e93046b.invoke(<generated>)    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)    at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688)    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)    at com.tuan800.exercise.model.dao.impl.UnionDaoImpl$$EnhancerByCGLIB$$9160a017.getUnionById(<generated>)    at com.tuan800.exercise.service.impl.UnionServiceImpl.getUnionById(UnionServiceImpl.java:31)    at com.tuan800.exercise.controller.GridController.login(GridController.java:37)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)    at java.lang.reflect.Method.invoke(Method.java:597)    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175)    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421)    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:774)    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)    at org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:195)    at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:159)    at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:141)    at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:90)    at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:417)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)    at java.lang.Thread.run(Thread.java:619)


通过打断点发现 我的mapper为空,开始以为是mapper没有注入到dao的impl中,一直为这个问题纠结了一天的时间,但是第二天重新整理思路,看后台打出来的sql语句然后把sql语句放到数据库中执行吗,发现执行不了,终于知道错误的根本原因。原来一开始我就找错了方向,错的不是mapper注入为空,而是sql语句错了,表中的字段名是mysql的关键字,致使sql语句无法运行,一开始想的是随便建个表测试一下,但是居然会犯这么低级的错误,下次得小心了。
 
备注:mapper可以为null,至于为什么,还有待研究。
原创粉丝点击