在Mybatis中有三种Executor:spring
这些就是Mybatis的三种执行器。你能够经过配置文件的settings
里面的元素defaultExecutorType
,配置它,默认是采用SimpleExecutor若是你在Spring运用它,那么你能够这么配置它:sql
<bean id="sqlSessionTemplateBatch" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> <!--更新采用批量的executor --> <constructor-arg index="1" value="BATCH"/> </bean>
或者在Spring Boot的属性文件中配置:数据库
mybatis.executor-type=BATCH
若是你在事务中有这么一段代码:mybatis
Media media = new Media(); media.setTitle("默认用户头像"); media.setMediaType(0); media.setUrl(defaultAvatarUrl); mediaMapper.insert(media); logger.info("mediaId : " + media.getId()); User user = new User(); user.setMedia(media); userMapper.insert(user);
那么就会致使Media
没法获取插入数据库后的id。app
这时,只须要修改Executor为其它两种便可:code
<bean id="sqlSessionTemplateBatch" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> <!--更新采用批量的executor --> <constructor-arg index="1" value="SIMPLE"/> </bean>
或者在Spring Boot的属性文件中配置:事务
mybatis.executor-type=SIMPLE
以上get