在项目开发中遇到一个问题,ibatis执行存储过程时报错
<procedure id="insertStatisticsResult_settle" parameterClass="String">
<![CDATA[
{call proc_stats_$statisticsType$()}
]]>
</procedure>
错误日志如下:
--- The error occurred in com/aspire/prm/dmplt/statistics/dao/ibatis/maps/StatisticsSQL.xml. --- The error occurred while applying a parameter map. --- Check the insertStatisticsResult_settle-InlineParameterMap. --- Check the output parameters. --- Cause: java.lang.ArrayIndexOutOfBoundsException: 0; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in com/aspire/prm/dmplt/statistics/dao/ibatis/maps/StatisticsSQL.xml. --- The error occurred while applying a parameter map. --- Check the insertStatisticsResult_settle-InlineParameterMap. --- Check the output parameters. --- Cause: java.lang.ArrayIndexOutOfBoundsException: 0 Caused by: com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in com/aspire/prm/dmplt/statistics/dao/ibatis/maps/StatisticsSQL.xml. --- The error occurred while applying a parameter map. --- Check the insertStatisticsResult_settle-InlineParameterMap. --- Check the output parameters. --- Cause: java.lang.ArrayIndexOutOfBoundsException: 0 at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:94) at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExecutorDelegate.java:447) at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionImpl.java:82) at org.springframework.orm.ibatis.SqlMapClientTemplate$9.doInSqlMapClient(SqlMapClientTemplate.java:370) at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:194) at org.springframework.orm.ibatis.SqlMapClientTemplate.insert(SqlMapClientTemplate.java:368) at com.aspire.prm.dmplt.statistics.dao.ibatis.StatisticsDaoImpl.doStatistics(StatisticsDaoImpl.java:63) at com.aspire.prm.dmplt.statistics.biz.impl.StatisticsBizImpl.doStatistics(StatisticsBizImpl.java:64) at com.aspire.prm.app.statistics.manager.impl.StatisticsManagerImpl.doStatistics(StatisticsManagerImpl.java:62) at com.aspire.prm.app.statistics.manager.impl.StatisticsManagerImpl.doStatistics(StatisticsManagerImpl.java:50) at com.aspire.prm.app.statistics.manager.impl.StatisticsManagerImpl$$FastClassByCGLIB$$c1412355.invoke(<generated>) at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149) at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:696) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:631) at com.aspire.prm.app.statistics.manager.impl.StatisticsManagerImpl$$EnhancerByCGLIB$$7f8146a6.doStatistics(<generated>) at com.aspire.prm.app.statistics.job.StatisticsJob.execute(StatisticsJob.java:40) at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529) Caused by: java.lang.ArrayIndexOutOfBoundsException: 0 at com.ibatis.sqlmap.engine.exchange.PrimitiveDataExchange.setData(PrimitiveDataExchange.java:51) at com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap.refreshParameterObjectValues(BasicParameterMap.java:140) at com.ibatis.sqlmap.engine.mapping.statement.ProcedureStatement.postProcessParameterObject(ProcedureStatement.java:26) at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:82) ... 22 more
在网上查了资料没有有效的解决方案,所以只能跟踪日志来。
--- The error occurred while applying a parameter map. --- Check the insertStatisticsResult_settle-InlineParameterMap.
观察这个日志是由于传入参数错误,我看网上demo都是传入的map,而我的是string,
问题出在这,存储过程参数都以map的形式传入。
将传入参数改为hashmap就ok了
<procedure id="insertStatisticsResult_settle" parameterClass="java.util.HashMap">
<![CDATA[
{call proc_stats_$statisticsType$()}
]]>
</procedure>
相关推荐
- "Ibatis.DataMapper.1.6.2.bin":这是一个单独的1.6.2版本的DataMapper组件,可能是开发或升级过程中需要的特定文件。 5. **实际应用与最佳实践** - 配置管理:正确配置数据库连接信息、事务管理及日志记录等是...
这里提到的是iBATIS的三个不同版本的jar包:ibatis-2.3.4.726.jar、ibatis-2.3.0.677.jar以及ibatis-2.3.3.720.jar。 首先,让我们深入了解iBATIS的核心概念和功能: 1. **SQL Map配置**:iBATIS的核心是SQL Map...
Caused by: java.net.UnknownHostException: openapi.alipay.com
此段代码展示了如何在Java层通过Ibatis调用上述定义的存储过程`shareDeviceToPerson`。首先,创建一个`Map`对象来存储过程参数,并设置输入参数;然后通过`getSqlMapClientTemplate().insert()`方法执行存储过程;...
标题 "ibatis-2.3.0.677.jar" 指向的是一个特定版本的 iBATIS 库,即版本号为 2.3.0.677 的 JAR 文件。iBATIS 是一个开源的 Java 框架,主要用于简化数据库与应用程序之间的交互。它在早期广泛应用于企业级应用开发...
ibatis-2.3.3.720.jar
下面将详细解释ibatis框架的基本概念、存储过程的概念以及如何在ibatis中配置和执行存储过程。 ### 一、ibatis框架简介 ibatis是一个开源的数据访问层框架,它提供了基于Java的持久层解决方案。ibatis通过SQL映射...
总的来说,Ibatis-2.3.0.677版本是一个值得信赖的Java持久层解决方案,它的稳定性和易用性使得开发者能够在处理数据库操作时更加得心应手。通过学习和熟练掌握这个版本,开发者可以提高工作效率,减少因框架问题导致...
iBATIS是一款开源的持久层框架,它简化了Java应用程序与数据库之间的交互过程。为了提高开发效率和代码的可读性,iBATIS引入了一系列内置别名,用于简化配置文件中的全限定类名书写。本文将详细介绍iBATIS内置别名...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责简化数据库操作,将SQL语句与Java代码分离,使得开发人员能够更加专注于业务逻辑。在本主题中,我们将深入探讨Ibatis的两个特定版本:ibatis2.3.4.8....
5. Executor:执行器接口,是iBatis实现SQL执行的核心,包括SimpleExecutor、ReusedExecutor和BatchExecutor,分别对应简单执行、复用执行和批处理执行。 6. StatementHandler:处理SQL语句,将SQL语句与参数绑定,...
在Java开发领域,Ibatis作为一个轻量级的持久层框架,以其灵活、易用的特点深受开发者喜爱。本次我们将详细探讨`ibatis-2.3.2.715.jar`这个特定版本的Ibatis库,它为开发者提供了强大的数据访问功能。 Ibatis,全称...
总的来说,Ibatis-2.3.0.677.jar是一个集成了Ibatis框架所有功能的版本,提供了动态SQL、参数映射、结果映射、缓存和映射文件外部化等强大特性,旨在帮助Java开发者更高效、更灵活地进行数据库操作。结合提供的...
5. **处理结果**:存储过程执行后,可能会有多个结果集返回。ibatIS会自动处理这些结果,将其转换为Java对象。如果存储过程没有返回值,结果通常是一个空的List。 6. **异常处理**:在调用存储过程时,可能出现SQL...
在使用Mybatis框架时,你可能会遇到`org.apache.ibatis.exceptions.PersistenceException`这样的异常。这个异常通常表示在执行数据库查询操作时遇到了问题。本篇将详细分析这个问题并提供解决方法。 ### 问题概述 ...
- **ibatis.jar**:这是Ibatis的主库,包含了所有必需的类和接口。 - **sqlmapconfig.xml**:这是Ibatis的全局配置文件,用于配置数据源、事务管理器、日志工厂等。 - **mapper.xml**:这些文件是SQL映射文件,每个...
nested exception is org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.IllegalStateException: Cannot enable lazy loading because CGLIB is not ...
1.iBatis2学习笔记:基本原理和配置.doc 2.iBatis2学习笔记:与Spring2的整合.doc 3.iBatis2学习笔记:单表映射 .doc 4.iBatis2学习笔记:SqlMap的配置总结(18条).doc 5.iBatis2学习笔记:入参和返回值的问题.doc ...
ibatis-2.3.4.732.jar