之前给大家介绍过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常见问题及解决方法可以为你分享。
推荐阅读: