-
Mybatis批处理报错10
代码如下:
List<VisitEntity> visits = new ArrayList<VisitEntity>(); VisitEntity uv = null; for (int i = 0; i < 1000; i++) { uv = new VisitEntity(); uv.setPage("http://www.site.com/"); uv.setPageName("首页"); uv.setReferer("http://www.site.com?wd=关键字"); uv.setRefererDomain("http://www.baidu.com"); uv.setSearchEngine("baidu"); uv.setSearchWord("官网"); uv.setSessionId("asadf232asdf22"); uv.setTime(new java.util.Date()); uv.setTrafficType("search"); visits.add(uv); } SqlSessionFactory factory = MybatisUtil.getSqlSessionFactory(); SqlSession sqlSession = factory.openSession(ExecutorType.BATCH, false); UserVisitMapper mapper = sqlSession.getMapper(UserVisitMapper.class); //批量插入 long start = System.currentTimeMillis(); try { for (VisitEntity t : visits) { mapper.insert(t); } sqlSession.commit(); } catch (SQLException e) { e.printStackTrace(); } long end = System.currentTimeMillis(); System.out.println("批量插入共花费时间" + (end-start) + "ms");
生成SqlSession,如果用默认的SimpleExecutor一切正常,换做BatchExecutor就会报下面的错误:
xception in thread "main" org.apache.ibatis.exceptions.PersistenceException: ### Error committing transaction. Cause: java.lang.ArrayIndexOutOfBoundsException ### Cause: java.lang.ArrayIndexOutOfBoundsException at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:8) at org.apache.ibatis.session.defaults.DefaultSqlSession.commit(DefaultSqlSession.java:146) at org.apache.ibatis.session.defaults.DefaultSqlSession.commit(DefaultSqlSession.java:138) at com.cssweb.analytics.persistence.ServiceTest.main(ServiceTest.java:151) Caused by: java.lang.ArrayIndexOutOfBoundsException at java.lang.System.arraycopy(Native Method) at oracle.jdbc.driver.T4CRowidAccessor.unmarshalOneRow(T4CRowidAccessor.java:202) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:610) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216) at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955) at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10622) 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:67) at $Proxy2.executeBatch(Unknown Source) at org.apache.ibatis.executor.BatchExecutor.doFlushStatements(BatchExecutor.java:81) at org.apache.ibatis.executor.BaseExecutor.flushStatements(BaseExecutor.java:97) at org.apache.ibatis.executor.BaseExecutor.flushStatements(BaseExecutor.java:92) at org.apache.ibatis.executor.BaseExecutor.commit(BaseExecutor.java:172) at org.apache.ibatis.executor.CachingExecutor.commit(CachingExecutor.java:80) at org.apache.ibatis.session.defaults.DefaultSqlSession.commit(DefaultSqlSession.java:143) ... 2 more
错误发生在下面这行:
at org.apache.ibatis.executor.BatchExecutor.doFlushStatements(BatchExecutor.java:81)
不知道这里面具体做了些什么事情,导致数组越界?
2012年8月10日 16:52
目前还没有答案
相关推荐
解决mybatis头文件报错 下载好压缩包 解压将文件放到本地文件夹 例如 D盘的哪个文件夹 D:\mybatis\ ;然后打开eclipse ->Window->prefenrence->XML->XML Catalog->User Specifiled Entreis->Add->Location(此处是你...
MyBatis批处理自动生成代码文件是一项非常实用的功能,它能够极大地提高开发效率,减少手动编写重复代码的工作量。此工具通常包含一个`.bat`批处理脚本,用于执行自动化生成过程,以及一个`generatorConfig.xml`配置...
以下是对Mybatis批处理的详细说明: 1. **批量插入** 批量插入是将多条插入语句合并成一个大的SQL语句来执行,避免了频繁的数据库连接开销。在Mybatis中,可以通过Mapper接口和对应的XML配置实现。首先,定义一个...
#mybatis批处理测试 背景 如何在Mybatis和XML中的foreach中批处理Sqlsession 应用于mybatis批处理测试的技术如下: 使用开源 版本 Java 1.7 春天 4.1.5 摇动 2.2.1 Mybatis 3.2.8 功能细节 mybatis-batch-...
首先,我们来看`mybatis批处理`。MyBatis的批处理功能允许我们在一次数据库连接中执行多条SQL语句,从而减少了数据库连接的创建和关闭的开销,提高了性能。批处理可以通过设置`Statement`的`setFetchSize()`方法或者...
在MyBatis中,`<foreach>`标签是用于遍历集合对象并生成SQL语句的重复部分,例如IN语句的括号内元素。然而,当你遇到“_frch_item_0 not found”这样的错误时,通常是由于在使用`<foreach>`时出现了配置或编码上的...
在整合Spring Boot与MyBatis-Plus的过程中,可能会遇到启动应用时报错的问题。错误信息通常类似于"Error starting ApplicationContext",并提示"UnsatisfiedDependencyException",这表明Spring框架在初始化bean时...
在Java开发中,MyBatis是一个非常流行的持久层框架,它简化了数据库操作,通过XML或注解方式配置SQL和映射结果。然而,在大型应用中,为了提高系统的响应速度和减少数据库压力,通常会引入第三方缓存。本教程将讨论...
在使用Mybatis-Plus进行数据查询时,如果你的实体类中使用了Java 8的`LocalDateTime`类型来表示日期时间,并遇到了`SQLFeatureNotSupportedException`的异常,这通常是因为数据库驱动不支持直接将`LocalDateTime`...
总之,解决Mybatis返回`int`或`Integer`类型报错的问题,你可以: 1. 将Mapper方法的返回类型改为`Integer`,以允许返回`null`。 2. 在SQL查询中使用`NVL()`, `IFNULL()`, `ISNULL()`或`COALESCE()`函数来确保在没有...
Mybatis Generator是一款强大的自动化代码生成工具,主要用于简化开发过程中对数据库操作的代码编写。它能够根据数据库中的表自动生成Java实体类、Mapper接口及其XML配置文件、DAO接口及其实现类等,极大地提高了...
mybatis框架在执行批量插入或者更新的时候限制入参...突破mybatis批处理数据量2100个的限制,另一个应用场景是,即使没有用到mybatis,也可以作为自动分批提交的工具,防止一次性提交数据过大导致数据库自动提高锁级别
MyBatis是一款流行的Java持久层框架,它简化了数据库操作,使得开发者能够将注意力集中在SQL语句上,而无需处理繁琐的JDBC代码。MyBatis Plugin 3.2.1是针对IntelliJ IDEA(简称IDEA)的一款增强插件,旨在提升开发...
在开发过程中,数据库操作是必不可少的一环,而Mybatis作为一款流行的数据持久层框架,其在与Oracle数据库交互时可能会遇到各种错误。本篇文章将详细探讨一个特定的问题——"ORA-00911: invalid character",以及...
MyBatis批量插入Update MyBatis批量插入是一种高效的数据插入方式,通过将多条数据一次性插入数据库,可以大大提高插入速度。在实际测试中,使用MyBatis批量插入可以达到至少快一倍的执行效率。 MyBatis批量插入的...
浅谈Mybatis版本升级踩坑及背后原理分析 Mybatis版本升级踩坑及背后原理分析是Mybatis开发中的一大难点,因为Mybatis版本的升级可能会导致一些不兼容的变化,从而导致系统出现一些问题。了解Mybatis版本升级踩坑及...
在使用Mybatis-Plus时,有时开发者可能会遇到一个常见的错误——`Invalid bound statement (not found)`。这个错误意味着Mybatis-Plus无法找到对应的SQL映射语句,这通常是由于配置问题或者依赖缺失所引起的。本文将...
Mybatis Generator是一款强大的工具,它能够自动生成Mybatis的相关代码,包括Mapper接口、XML映射文件、实体类以及DAO层的实现代码,极大地提高了开发效率,减少了手动编写这些重复性工作的繁琐。本篇文章将深入探讨...
MyBatis Generator(MBG)是一款强大的自动化代码生成工具,它可以自动生成MyBatis的映射文件、Java实体类和DAO接口,极大地提高了开发效率。MBG作为一个独立的工具,通常通过命令行或者集成到IDE中来使用。在这个...
在使用MyBatis进行数据操作时,我们经常会遇到关于返回值类型的困扰,特别是涉及到基本类型int和对象类型Integer之间的转换。标题"mybatis返回Integer"指的是在MyBatis的映射文件或者Mapper接口中,使用Integer作为...