由于使用union all oracle ,超长会报错,所以采用SqlSessionTemplate动态获取mapper,
然后每次循环1000条插入数据库,参考Url
http://www.tuicool.com/articles/mEFb6zq
http://www.tuicool.com/articles/E3ARBzI
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
Service 层注注入SqlSessionTemplate, 因为没有dao层。所以动态获取Mapper,单笔插入数据库。
@Resource
private SqlSessionTemplate sqlSessionPS;
SqlSession session = sqlSessionPS.getSqlSessionFactory().openSession( ExecutorType.BATCH, false);
//通过新的session获取mapper
InstCheckSettlementDetailMapper instDetailMapper = session.getMapper(InstCheckSettlementDetailMapper.class);
int size = list.size();
try {
for (int i = 0; i < size; i++) {
TtCheckSettlementDetail dtl= list.get(i);
instDetailMapper.insertCheckSettlementDtlOne(dtl);
if (i % 1000 == 0 || i == size - 1) {
//手动每1000个一提交,提交后无法回滚
session.commit();
//清理缓存,防止溢出
session.clearCache();
}
}
} catch (Exception e) {
//没有提交的数据可以回滚
session.rollback();
} finally {
session.close();
}
分享到:
相关推荐
在调用完Mapper方法后,通常需要调用`SqlSession.commit()`来提交事务,或者在发生异常时调用`SqlSession.rollback()`回滚事务。 总的来说,Mapper映射配置在MyBatis中扮演着桥梁的角色,连接Java代码和数据库操作...
MyBatis批量添加数据的方法 MyBatis是一款流行的Java持久层框架,它提供了多种方式来批量添加数据,以下是其中两种常用的方法: 方法一:使用foreach标签 在MyBatis中,我们可以使用foreach标签来批量添加数据。...
Mybatis批量更新三种方式的实现 Mybatis是一款流行的持久层框架,它提供了强大的数据库交互能力。其中,批量更新是一种常见的操作,能够提高数据库操作的效率。下面将介绍Mybatis批量更新三种方式的实现。 方式一...
Mybatis批量插入的四种方式 ...在上面的代码中,SqlSessionFactory 的 openSession 方法将创建一个批量会话,Mapper 的 insert 方法将被执行多次,每次插入一个用户数据。最后, sqlSession.commit() 将提交批量计划。
本文将深入探讨MyBatis中实现批量插入的两种高效方式。 ### 1. MyBatis `foreach` 标签 `foreach` 是MyBatis中用于在SQL语句中迭代集合的标签,特别适合构建`IN`条件。`foreach` 元素的属性包括: - `item`: 集合...
总结,MyBatis使用Mapper方式开发DAO方法,主要步骤包括创建Mapper接口、编写Mapper XML文件、配置MyBatis、获取Mapper实例以及使用动态SQL和复杂类型映射。这种方式使得数据库操作与业务逻辑解耦,提高了代码的...
所有更新操作都会被放入批量执行队列中,最后调用session.commit()方法来提交整个事务。 与直接使用Mapper接口相比,这种方式可以显著提高执行效率,尤其是在处理大量数据时。不过,开发者们也应该注意,在使用...
MyBatis Mapper v2.2.1 是一个用于Java开发中的持久层框架,它提供了强大的映射功能,帮助开发者将数据库操作与业务逻辑分离。这个压缩包包含了MyBatis Mapper的源码,对于学习和理解MyBatis的工作原理以及如何...
5. **Mapper接口与Mapper XML文件**:MyBatis允许我们定义Mapper接口,接口方法对应XML文件中的SQL语句。通过Mapper工厂,我们可以获得Mapper接口的实例,然后调用方法执行SQL。 6. **参数映射**:MyBatis支持多种...
4. **Mapper接口**:MyBatis允许我们将SQL语句与Java方法绑定,通过Mapper接口来调用。在示例中,你可能会看到一个`UserMapper`接口,其中定义了诸如查询用户、插入用户等方法。对应的XML映射文件(如`UserMapper....
// 设置每次批量插入的条数 for (int i = 0; i (); i += batchSize) { List<User> subList = users.subList(i, Math.min(i + batchSize, users.size())); userMapper.insertList(subList); if (i + batchSize >...
6. **Mapper的实例化**:MyBatis通过`@Mapper`注解或`MapperFactoryBean`来将Mapper接口与XML映射文件关联。在Spring环境中,我们可以使用`@Autowired`注解自动注入Mapper实例。 7. **执行SQL**:有了Mapper接口和...
3. **Mapper接口和Mapper XML文件**: MyBatis允许开发者定义Mapper接口,接口方法与XML配置文件中的SQL语句相对应。XML文件中定义了SQL的编写、参数映射和结果映射。 4. **动态SQL**: MyBatis支持在XML映射文件中...
其次,Mapper接口和Mapper XML文件是MyBatis的重要组成部分。Mapper接口定义了数据库操作的方法,而Mapper XML文件则包含对应的SQL语句和结果映射。通过@Mapper注解标记接口,MyBatis可以在运行时动态生成实现类,...
- 集成步骤通常包括添加MyBatis和其Scala绑定库到项目依赖,配置MyBatis的SqlSessionFactory,并编写Scala版的Mapper接口。 2. **Scala版的MyBatis配置** - 在Scala中,我们需要创建一个`...
4. **Mapper接口和Mapper XML文件**:MyBatis允许我们定义Mapper接口,其中的方法对应数据库的SQL操作。Mapper XML文件则包含具体的SQL语句和映射规则,两者通过namespace进行关联。 5. **动态SQL**:MyBatis的动态...
Spring将事务放到Service中管理,对于每一个service中的sqlsession是不同的,这是通过mybatis-spring中的org.mybatis.spring.mapper.MapperScannerConfigurer创建sqlsession自动注入到service中的。每次查询之后都要...
4. **Mapper接口/Mapper XML**:MyBatis允许开发者定义Mapper接口,每个方法对应一个SQL查询。在XML配置文件中定义SQL语句和结果映射,实现SQL与Java代码的解耦。 5. **动态SQL**:MyBatis支持动态SQL,使得在XML...
本文将详细讲解如何使用MyBatis的注解方式在MySQL和Oracle数据库上实现批量处理,旨在提高数据操作的效率。 首先,我们要理解MyBatis的核心原理,它是一个基于Java的持久层框架,通过XML或注解来映射SQL语句,简化...
在运行时,MyBatis会生成一个实现了Mapper接口的代理类,调用接口方法即可执行相应的SQL。 7. **CRUD操作** 使用MyBatis进行CRUD操作非常直观。例如,插入一条用户数据: ```java SqlSession session = ...