sql is :
<select id="insertByMarkPins" parameterType="List">
INSERT INTO cv_task_mark_user (
team_id ,
task_id ,
pin,
creator,
created,
deleted
)
VALUES
<foreach collection="list" index="index" item="item" separator=",">
(#{item.teamId},#{item.taskId},#{item.pin},#{item.creator},now(),0)
</foreach>
</select>
parameterType="List" 参数是一个集合List
At 2019-12-06 18:08:35, "[email protected]" <[email protected]> wrote:
>> Using mybatis, the parameter is list to report null pointer error.
>
>I can't understand `the parameter is list`, what's mean?
>
>------------------
>
>Liang Zhang (John)
>Apache ShardingSphere & Dubbo
>
>
>xu <[email protected]> 于2019年12月6日周五 下午5:48写道:
>
>> Using mybatis, the parameter is list to report null pointer error. The
>> version of mybatis is 3.2.0,the version of sharding is 4.0.0-RC3 ,The
>> specific log is as follows:
>>
>>
>>
>>
>> Fetched SqlSession
>> [org.apache.ibatis.session.defaults.DefaultSqlSession@9d7c7b] from
>> current transaction
>> ooo Using Connection
>> [org.apache.shardingsphere.shardingjdbc.jdbc.core.connection.ShardingConnection@121f239
>> ]
>> ==> Preparing: INSERT INTO cv_task_mark_user ( team_id , task_id , pin,
>> creator, created, deleted ) VALUES (?,?,?,?,now(),0)
>> ==> Parameters: 122(Long), 2446(Long), xukaiwei1(String), xukaiwei1(String)
>> [2019-12-06 17:39:12] INFO ShardingSphere-SQL(http-nio-8088-exec-8);
>> :Rule Type: sharding
>> [2019-12-06 17:39:12] INFO ShardingSphere-SQL(http-nio-8088-exec-8);
>> :Logic SQL: INSERT INTO cv_task_mark_user (
>> team_id ,
>> task_id ,
>> pin,
>> creator,
>> created,
>> deleted
>> )
>> VALUES
>>
>> (?,?,?,?,now(),0)
>> [2019-12-06 17:39:12] INFO ShardingSphere-SQL(http-nio-8088-exec-8);
>> :SQLStatement:
>> InsertSQLStatementContext(super=CommonSQLStatementContext(sqlStatement=org.apache.shardingsphere.core.parse.sql.statement.dml.InsertStatement@115c689,
>> tablesContext=TablesContext(tables=[Table(name=cv_task_mark_user,
>> alias=Optional.absent())], schema=Optional.absent())),
>> columnNames=[team_id, task_id, pin, creator, created, deleted],
>> insertValueContexts=[InsertValueContext(parametersCount=4,
>> valueExpressions=[ParameterMarkerExpressionSegment(startIndex=180,
>> stopIndex=180, parameterMarkerIndex=0),
>> ParameterMarkerExpressionSegment(startIndex=182, stopIndex=182,
>> parameterMarkerIndex=1), ParameterMarkerExpressionSegment(startIndex=184,
>> stopIndex=184, parameterMarkerIndex=2),
>> ParameterMarkerExpressionSegment(startIndex=186, stopIndex=186,
>> parameterMarkerIndex=3), CommonExpressionSegment(startIndex=188,
>> stopIndex=192, text=now()), LiteralExpressionSegment(startIndex=194,
>> stopIndex=194, literals=0)], parameters=[122, 2446, xukaiwei1, xukaiwei1])])
>> [2019-12-06 17:39:12] INFO ShardingSphere-SQL(http-nio-8088-exec-8);
>> :Actual SQL: cv_dataSource ::: INSERT INTO cv_task_mark_user (
>> team_id ,
>> task_id ,
>> pin,
>> creator,
>> created,
>> deleted
>> )
>> VALUES
>>
>> (?, ?, ?, ?, now(), 0) ::: [122, 2446, xukaiwei1, xukaiwei1]
>> Releasing transactional SqlSession
>> [org.apache.ibatis.session.defaults.DefaultSqlSession@9d7c7b]
>> Transaction synchronization rolling back SqlSession
>> [org.apache.ibatis.session.defaults.DefaultSqlSession@9d7c7b]
>> Transaction synchronization closing SqlSession
>> [org.apache.ibatis.session.defaults.DefaultSqlSession@9d7c7b]
>> [2019-12-06 17:39:19] DEBUG
>> org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver(http-nio-8088-exec-8);
>> :Resolving exception from handler [public net.sf.json.JSONObject
>> com.jd.bdp.cv.web.controller.CvTaskController.save(com.jd.bdp.cv.domain.CvUser,com.jd.bdp.cv.domain.CvTask,org.springframework.web.multipart.MultipartFile,javax.servlet.http.HttpServletRequest)
>> throws java.lang.Exception]: org.mybatis.spring.MyBatisSystemException:
>> nested exception is org.apache.ibatis.exceptions.PersistenceException:
>> ### Error querying database. Cause: java.lang.NullPointerException
>> ### The error may exist in URL
>> [jar:file:/D:/workspace_bdp/bdp_cv_inter/cv-web/target/cv-web/WEB-INF/lib/cv-dao-1.0-SNAPSHOT.jar!/com/jd/bdp/cv/dao/CvTaskMarkUser.xml]
>> ### The error may involve
>> com.jd.bdp.cv.dao.CvTaskMarkUserDao.insertByMarkPins-Inline
>> ### The error occurred while setting parameters
>> ### SQL: INSERT INTO cv_task_mark_user ( team_id , task_id
>> , pin, creator, created, deleted )
>> VALUES (?,?,?,?,now(),0)
>> ### Cause: java.lang.NullPointerException
>> [2019-12-06 17:39:19] DEBUG
>> org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver(http-nio-8088-exec-8);
>> :Resolving exception from handler [public net.sf.json.JSONObject
>> com.jd.bdp.cv.web.controller.CvTaskController.save(com.jd.bdp.cv.domain.CvUser,com.jd.bdp.cv.domain.CvTask,org.springframework.web.multipart.MultipartFile,javax.servlet.http.HttpServletRequest)
>> throws java.lang.Exception]: org.mybatis.spring.MyBatisSystemException:
>> nested exception is org.apache.ibatis.exceptions.PersistenceException:
>> ### Error querying database. Cause: java.lang.NullPointerException
>> ### The error may exist in URL
>> [jar:file:/D:/workspace_bdp/bdp_cv_inter/cv-web/target/cv-web/WEB-INF/lib/cv-dao-1.0-SNAPSHOT.jar!/com/jd/bdp/cv/dao/CvTaskMarkUser.xml]
>> ### The error may involve
>> com.jd.bdp.cv.dao.CvTaskMarkUserDao.insertByMarkPins-Inline
>> ### The error occurred while setting parameters
>> ### SQL: INSERT INTO cv_task_mark_user ( team_id , task_id
>> , pin, creator, created, deleted )
>> VALUES (?,?,?,?,now(),0)
>> ### Cause: java.lang.NullPointerException
>> [2019-12-06 17:39:19] DEBUG
>> org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver(http-nio-8088-exec-8);
>> :Invoking @ExceptionHandler method: public void
>> com.jd.bdp.cv.web.controller.ExceptionHandleController.page500(java.lang.Exception,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
>> throws java.lang.Exception
>> [2019-12-06 17:39:19] DEBUG
>> org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver(http-nio-8088-exec-8);
>> :Invoking @ExceptionHandler method: public void
>> com.jd.bdp.cv.web.controller.ExceptionHandleController.page500(java.lang.Exception,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
>> throws java.lang.Exception
>> [2019-12-06 17:39:19] ERROR
>> com.jd.bdp.cv.web.controller.SqlController(http-nio-8088-exec-8); :系统错误
>> org.mybatis.spring.MyBatisSystemException: nested exception is
>> org.apache.ibatis.exceptions.PersistenceException:
>> ### Error querying database. Cause: java.lang.NullPointerException
>> ### The error may exist in URL
>> [jar:file:/D:/workspace_bdp/bdp_cv_inter/cv-web/target/cv-web/WEB-INF/lib/cv-dao-1.0-SNAPSHOT.jar!/com/jd/bdp/cv/dao/CvTaskMarkUser.xml]
>> ### The error may involve
>> com.jd.bdp.cv.dao.CvTaskMarkUserDao.insertByMarkPins-Inline
>> ### The error occurred while setting parameters
>> ### SQL: INSERT INTO cv_task_mark_user ( team_id , task_id
>> , pin, creator, created, deleted )
>> VALUES (?,?,?,?,now(),0)
>> ### Cause: java.lang.NullPointerException
>> at
>> org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75)
>> at
>> org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:368)
>> at com.sun.proxy.$Proxy18.selectOne(Unknown Source)
>> at
>> org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:163)
>> at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63)
>> at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:43)
>> at com.sun.proxy.$Proxy45.insertByMarkPins(Unknown Source)
>> at
>> com.jd.bdp.cv.service.impl.CvTaskMarkUserServiceImpl.insertTaskMarkUserByPins(CvTaskMarkUserServiceImpl.java:61)
>> at
>> com.jd.bdp.cv.service.impl.CvTaskMarkUserServiceImpl$$FastClassByCGLIB$$d892ac4.invoke(<generated>)
>> at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
>> at
>> org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698)
>> at
>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
>> at
>> org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
>> at
>> org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
>> at
>> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
>> at
>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
>> at
>> org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
>> at
>> com.jd.bdp.cv.service.impl.CvTaskMarkUserServiceImpl$$EnhancerByCGLIB$$3144dda3.insertTaskMarkUserByPins(<generated>)
>> at
>> com.jd.bdp.cv.service.impl.CvTaskServiceImpl.saveTask(CvTaskServiceImpl.java:285)
>> at
>> com.jd.bdp.cv.service.impl.CvTaskServiceImpl$$FastClassByCGLIB$$b24d251c.invoke(<generated>)
>> at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
>> at
>> org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698)
>> at
>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
>> at
>> org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
>> at
>> org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
>> at
>> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
>> at
>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
>> at
>> org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
>> at
>> com.jd.bdp.cv.service.impl.CvTaskServiceImpl$$EnhancerByCGLIB$$4ae3a4fb.saveTask(<generated>)
>> at
>> com.jd.bdp.cv.web.controller.CvTaskController.saveCvTask(CvTaskController.java:528)
>> at
>> com.jd.bdp.cv.web.controller.CvTaskController.save(CvTaskController.java:374)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:497)
>> at
>> org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
>> at
>> org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
>> at
>> org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
>> at
>> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
>> at
>> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
>> at
>> org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
>> at
>> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
>> at
>> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
>> at
>> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
>> at
>> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
>> at
>> org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
>> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
>> at
>> org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
>> at
>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
>> at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
>> at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
>> at
>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
>> at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
>> at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
>> at
>> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
>> at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
>> at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
>> at
>> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
>> at
>> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
>> at
>> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
>> at org.apache.tomcat.util.net
>> .NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
>> at org.apache.tomcat.util.net
>> .SocketProcessorBase.run(SocketProcessorBase.java:49)
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>> at
>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>> at java.lang.Thread.run(Thread.java:745)
>> Caused by: org.apache.ibatis.exceptions.PersistenceException:
>> ### Error querying database. Cause: java.lang.NullPointerException
>> ### The error may exist in URL
>> [jar:file:/D:/workspace_bdp/bdp_cv_inter/cv-web/target/cv-web/WEB-INF/lib/cv-dao-1.0-SNAPSHOT.jar!/com/jd/bdp/cv/dao/CvTaskMarkUser.xml]
>> ### The error may involve
>> com.jd.bdp.cv.dao.CvTaskMarkUserDao.insertByMarkPins-Inline
>> ### The error occurred while setting parameters
>> ### SQL: INSERT INTO cv_task_mark_user ( team_id , task_id
>> , pin, creator, created, deleted )
>> VALUES (?,?,?,?,now(),0)
>> ### Cause: java.lang.NullPointerException
>> at
>> org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)
>> at
>> org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:107)
>> at
>> org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:98)
>> at
>> org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:62)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:497)
>> at
>> org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358)
>> ... 72 more
>> Caused by: java.lang.NullPointerException
>> at
>> org.apache.shardingsphere.core.execute.sql.execute.result.StreamQueryResult.<init>(StreamQueryResult.java:52)
>> at
>> org.apache.shardingsphere.shardingjdbc.jdbc.core.statement.ShardingPreparedStatement.getResultSet(ShardingPreparedStatement.java:129)
>> at sun.reflect.GeneratedMethodAccessor119.invoke(Unknown Source)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:497)
>> at
>> org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:65)
>> at com.sun.proxy.$Proxy27.getResultSet(Unknown Source)
>> at
>> org.apache.ibatis.executor.resultset.FastResultSetHandler.handleResultSets(FastResultSetHandler.java:140)
>> at
>> org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:57)
>> at
>> org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:70)
>> at
>> org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:57)
>> at
>> org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:259)
>> at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:132)
>> at
>> org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:105)
>> at
>> org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)
>> at
>> org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:104)
>> ... 79 more