mybatis如何执行批处理?批处理执行器详解

KLQ 2020-07-13 11:00:56 java常见问答 7499

之前给大家介绍过mybatis如何实现延迟加载的相关内容,那么下面要给大家接着介绍的就是和mybatis批处理执行器有关的内容,一起来看看吧。

使用Mybatis批量操作就要在全局配置文件或者是获取sqlSession的时候设置执行类型为BATCH。

全局配置文件中配置;

<configuration>
    <!--  ...  -->
    <settings>
        <setting name="defaultExecutorType" value="BATCH"/>
    </settings>
    <!-- ... -->
</configuration>

获取sqlSession的时候,开启批处理执行;

InputStream resourceAsStream2 = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory build2 = new SqlSessionFactoryBuilder().build(resourceAsStream2);
SqlSession openSession2 = build2.openSession(ExecutorType.BATCH);

假如和spring框架整合之后,那么,批处理sqlSession可以配置在spring的bean容器当中,使用的时候获取这个sqlSession来进行dao操作;

<!--配置Mybatis的SqlSessionFactoryBean-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <!--配置mybatis核心配置文件-->
    <property name="configLocation" value="classpath:mybatis-config.xml"/>
    <!--配置mybatis的Mapper映射文件-->
    <property name="mapperLocations" value="classpath:com/test/mybatis/mapper/*.xml"/>
</bean>
<!--  在spring的bean容器中通过sqlSessionFactory配置批处理sqlSession  -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
    <constructor-arg name="executorType" value="BATCH"/>
</bean>

由于,批处理sqlSession已经在spring容器当中,所以的话,需要批处理的service处直接将批处理sqlSession依赖注入进去,之后再通过sqlSession的getMapper方法获取映射接口进行操作这样就可以了;

/...
/**
 * 将批处理sqlSession通过依赖注入加入到当前Service中进行批处理dao操作。
 */
@Autowired
private SqlSession sqlSession;
@Override
//...

@Override
public void insertBatch(Users user) {
    UsersMapper usersMapper = sqlSession.getMapper(UsersMapper.class);
    //批量插入操作
    usersMapper.insertBatch(user);
}

对于mybatis你还有哪些方面的内容想要了解的呢?可以继续关注奇Q工具网的常见问题栏目来进行了解哦,同时有更多的java常见问题及解决方法可以为你分享。

推荐阅读:

mybatis如何实现一对多查询?实现方式详解

mybatis怎么配置?方法详解

mybatis如何自动生成uuid主键?如何批量删除?