如何与其他mybatis ORM框架共存,例如 MP(mybatis-plus)、Mybatis-Flex
注意mapper无法共存,必须分开;实体虽然也能公用,但建议也分开
配置 MP(mybatis-plus) 配置
java
@Configuration
@MapperScan( value = "xxx.mapper",sqlSessionTemplateRef = "plusSqlSessionTemplate",markerInterface = BaseMapper.class)
public class MybatisPlusAutoConfiguration extends com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration {
public MybatisPlusAutoConfiguration(MybatisPlusProperties properties, ObjectProvider<Interceptor[]> interceptorsProvider, ObjectProvider<TypeHandler[]> typeHandlersProvider, ObjectProvider<LanguageDriver[]> languageDriversProvider, ResourceLoader resourceLoader, ObjectProvider<DatabaseIdProvider> databaseIdProvider, ObjectProvider<List<ConfigurationCustomizer>> configurationCustomizersProvider, ObjectProvider<List<SqlSessionFactoryBeanCustomizer>> sqlSessionFactoryBeanCustomizers, ObjectProvider<List<MybatisPlusPropertiesCustomizer>> mybatisPlusPropertiesCustomizerProvider, ApplicationContext applicationContext) {
super(properties, interceptorsProvider, typeHandlersProvider, languageDriversProvider, resourceLoader, databaseIdProvider, configurationCustomizersProvider, sqlSessionFactoryBeanCustomizers, mybatisPlusPropertiesCustomizerProvider, applicationContext);
}
@Override
@Bean("plusSqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
return super.sqlSessionFactory(dataSource);
}
@Override
@Bean("plusSqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("plusSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return super.sqlSessionTemplate(sqlSessionFactory);
}
}配置 Mybatis-Flex 配置
java
@Configuration
@MapperScan( value = "xxx.mapper",sqlSessionTemplateRef = "flexSqlSessionTemplate",markerInterface = BaseMapper.class)
public class MybatisFlexAutoConfiguration extends com.mybatisflex.spring.boot.MybatisFlexAutoConfiguration {
public MybatisFlexAutoConfiguration(MybatisFlexProperties properties, ObjectProvider<Interceptor[]> interceptorsProvider, ObjectProvider<TypeHandler[]> typeHandlersProvider, ObjectProvider<LanguageDriver[]> languageDriversProvider, ResourceLoader resourceLoader, ObjectProvider<DatabaseIdProvider> databaseIdProvider, ObjectProvider<List<ConfigurationCustomizer>> configurationCustomizersProvider, ObjectProvider<List<SqlSessionFactoryBeanCustomizer>> sqlSessionFactoryBeanCustomizers, ObjectProvider<DataSourceDecipher> dataSourceDecipherProvider, ObjectProvider<DynamicTableProcessor> dynamicTableProcessorProvider, ObjectProvider<DynamicSchemaProcessor> dynamicSchemaProcessorProvider, ObjectProvider<TenantFactory> tenantFactoryProvider, ObjectProvider<LogicDeleteProcessor> logicDeleteProcessorProvider, ObjectProvider<MyBatisFlexCustomizer> mybatisFlexCustomizerProvider) {
super(properties, interceptorsProvider, typeHandlersProvider, languageDriversProvider, resourceLoader, databaseIdProvider, configurationCustomizersProvider, sqlSessionFactoryBeanCustomizers, dataSourceDecipherProvider, dynamicTableProcessorProvider, dynamicSchemaProcessorProvider, tenantFactoryProvider, logicDeleteProcessorProvider, mybatisFlexCustomizerProvider);
}
@Override
@Bean("flexSqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
return super.sqlSessionFactory(dataSource);
}
@Override
@Bean("flexSqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("flexSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return super.sqlSessionTemplate(sqlSessionFactory);
}
}配置xbatis配置
java
@Configuration
@MapperScan( value = "xx.mapper",sqlSessionTemplateRef = "sqlSessionTemplate",markerInterface = MybatisMapper.class)
public class XbatisAutoConfiguration extends MybatisAutoConfiguration {
public XbatisAutoConfiguration(MybatisProperties properties, ObjectProvider<Interceptor[]> interceptorsProvider, ObjectProvider<TypeHandler[]> typeHandlersProvider, ObjectProvider<LanguageDriver[]> languageDriversProvider, ResourceLoader resourceLoader, ObjectProvider<DatabaseIdProvider> databaseIdProvider, ObjectProvider<List<ConfigurationCustomizer>> configurationCustomizersProvider, ObjectProvider<List<SqlSessionFactoryBeanCustomizer>> sqlSessionFactoryBeanCustomizers) {
super(properties, interceptorsProvider, typeHandlersProvider, languageDriversProvider, resourceLoader, databaseIdProvider, configurationCustomizersProvider, sqlSessionFactoryBeanCustomizers);
}
@Override
@Bean
@Primary
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
return super.sqlSessionFactory(dataSource);
}
@Override
@Primary
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return super.sqlSessionTemplate(sqlSessionFactory);
}
}全部完成!!!
