mybatis插入数据库时的问题记录

简介:

mybatis接口调用如下

1
rowPropSubInfoMapper.insertRowPropSubInfo(iRowPropSubInfoModel);


使用的mapper配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
< insert  id = "insertRowPropSubInfo"
         parameterType = "com.sinosig.evaluation.fcff.model.dto.IRowPropSubInfoModel" >
         insert into
         t_eva_fcff_row_property
         (FCFFID,
         ROWCODE,
         ROWNAME,
         ROWDESCRIPTION,
         ISSHOW,
         CURRENTPREMETHOD,
         CURRENTPREVALUE,
         CURRENTSCALEBASE,
         WARNINGDESCRIPTION)
         values
         (#{fcffid},
         #{code},
         #{name},
         #{description},
         #{isshow},
         #{currentPremethodCode},
         #{currentPreValue},
         #{currentScaleBase},
         #{warningDescription})
     </ insert >


抛出的异常信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
[DEBUG] 2013 - 12 - 17  17 : 26 : 54 , 166  java.sql.Connection#debug() @47 : ==>  Preparing: insert into t_eva_fcff_row_property (FCFFID, ROWCODE, ROWNAME, ROWDESCRIPTION, ISSHOW, CURRENTPREMETHOD, CURRENTPREVALUE, CURRENTSCALEBASE, WARNINGDESCRIPTION) values (?, ?, ?, ?, ?, ?, ?, ?, ?)
[DEBUG] 2013 - 12 - 17  17 : 26 : 54 , 166  org.mybatis.spring.SqlSessionUtils#debug() @47 : Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession @2a851f ]
[DEBUG] 2013 - 12 - 17  17 : 26 : 54 , 166  org.springframework.jdbc.datasource.DataSourceUtils#doReleaseConnection() @327 : Returning JDBC Connection to DataSource
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Error preparing statement.  Cause: java.lang.ArrayIndexOutOfBoundsException:  9
     at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java: 73 )
     at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java: 364 )
     at $Proxy5.insert(Unknown Source)
     at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java: 236 )
     at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java: 79 )
     at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java: 40 )
     at $Proxy32.insertRowPropSubInfo(Unknown Source)
     at com.sinosig.evaluation.fcff.service.manage.impl.RowPropSubInfoTempSaveImpl.visitRowPropSubInfo(RowPropSubInfoTempSaveImpl.java: 111 )
     at com.sinosig.evaluation.fcff.model.impl.FcffModelImpl.acceptVisitor(FcffModelImpl.java: 1203 )
     at com.sinosig.evaluation.fcff.service.manage.impl.RowPropSubInfoTempSaveImpl.updateSubInfo(RowPropSubInfoTempSaveImpl.java: 77 )
     at com.sinosig.evaluation.fcff.service.manage.AbstractSaveSubInfoService.call(AbstractSaveSubInfoService.java: 95 )
     at test.com.sinosig.evaluation.fcff.service.RowSubInfoSaveImplTest.testUpdateSubInfo(RowSubInfoSaveImplTest.java: 43 )
     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.junit.runners.model.FrameworkMethod$ 1 .runReflectiveCall(FrameworkMethod.java: 44 )
     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java: 15 )
     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java: 41 )
     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java: 20 )
     at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java: 79 )
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java: 71 )
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java: 49 )
     at org.junit.runners.ParentRunner$ 3 .run(ParentRunner.java: 193 )
     at org.junit.runners.ParentRunner$ 1 .schedule(ParentRunner.java: 52 )
     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java: 191 )
     at org.junit.runners.ParentRunner.access$ 000 (ParentRunner.java: 42 )
     at org.junit.runners.ParentRunner$ 2 .evaluate(ParentRunner.java: 184 )
     at org.junit.runners.ParentRunner.run(ParentRunner.java: 236 )
     at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java: 50 )
     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java: 38 )
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java: 467 )
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java: 683 )
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java: 390 )
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java: 197 )
Caused by: org.apache.ibatis.executor.ExecutorException: Error preparing statement.  Cause: java.lang.ArrayIndexOutOfBoundsException:  9
     at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java: 91 )
     at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java: 54 )
     at org.apache.ibatis.executor.ReuseExecutor.prepareStatement(ReuseExecutor.java: 73 )
     at org.apache.ibatis.executor.ReuseExecutor.doUpdate(ReuseExecutor.java: 46 )
     at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java: 108 )
     at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java: 75 )
     at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java: 145 )
     at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java: 134 )
     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: 354 )
     ...  33  more
Caused by: java.lang.ArrayIndexOutOfBoundsException:  9
     at oracle.jdbc.driver.OracleSql.computeBasicInfo(OracleSql.java: 950 )
     at oracle.jdbc.driver.OracleSql.getSqlKind(OracleSql.java: 623 )
     at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java: 1212 )
     at oracle.jdbc.driver.T4CPreparedStatement.<init>(T4CPreparedStatement.java: 28 )
     at oracle.jdbc.driver.T4CDriverExtension.allocatePreparedStatement(T4CDriverExtension.java: 68 )
     at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java: 3140 )
     at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java: 3042 )
     at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java: 5890 )
     at org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java: 508 )
     at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java: 400 )
     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.ConnectionLogger.invoke(ConnectionLogger.java: 53 )
     at $Proxy33.prepareStatement(Unknown Source)
     at org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java: 65 )
     at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java: 82 )
     ...  45  more


尤其奇怪的是,如果在insert语句中,将插入的列减少到7列或以下,则能够正常执行;8列或以上就会抛出这个异常,并且java.lang.ArrayIndexOutOfBoundsException: 9最后的数字就是列数。


折磨了我整整三天了。如果算上以前的问题,至少折磨了我一个礼拜了。头大。




本文转自 斯然在天边 51CTO博客,原文链接:http://blog.51cto.com/winters1224/1341638,如需转载请自行联系原作者

相关文章
|
1月前
|
SQL Java 数据库连接
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
174 26
深入 MyBatis-Plus 插件:解锁高级数据库功能
|
1月前
|
SQL 安全 Java
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
23 1
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
|
18天前
|
SQL Java 数据库连接
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
|
2月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
152 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
2月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
66 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
4月前
|
SQL 关系型数据库 MySQL
解决:Mybatis-plus向数据库插入数据的时候 报You have an error in your SQL syntax
该博客文章讨论了在使用Mybatis-Plus向数据库插入数据时遇到的一个常见问题:SQL语法错误。作者发现错误是由于数据库字段中使用了MySQL的关键字,导致SQL语句执行失败。解决方法是将这些关键字替换为其他字段名称,以避免语法错误。文章通过截图展示了具体的操作步骤。
|
4月前
|
XML SQL JavaScript
在vue页面引入echarts,图表的数据来自数据库 springboot+mybatis+vue+elementui+echarts实现图表的制作
这篇文章介绍了如何在Vue页面中结合SpringBoot、MyBatis、ElementUI和ECharts,实现从数据库获取数据并展示为图表的过程,包括前端和后端的代码实现以及遇到的问题和解决方法。
在vue页面引入echarts,图表的数据来自数据库 springboot+mybatis+vue+elementui+echarts实现图表的制作
|
4月前
|
druid Java 数据库连接
SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
386 0
|
6月前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
77 3
|
5月前
|
数据库
MybatisPlus3---常用注解,驼峰转下滑线作为表明 cteateTime 数据表中的 cteate_time,@TableField,与数据库字段冲突要使用转义字符“`order`“,is
MybatisPlus3---常用注解,驼峰转下滑线作为表明 cteateTime 数据表中的 cteate_time,@TableField,与数据库字段冲突要使用转义字符“`order`“,is