package com.linkwechat.coal.datasource; import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.core.MybatisConfiguration; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; import org.apache.ibatis.logging.stdout.StdOutImpl; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.PlatformTransactionManager; import javax.sql.DataSource; /** * 从数据源配置 */ @Configuration @MapperScan(basePackages = {"com.linkwechat.coal.modules.jzgdb.*.mapper"}, sqlSessionFactoryRef = "jzgdbSqlSessionFactory") public class JzgdbDataSourceConfig { @Bean(name = "jzgdbDataSource") @ConfigurationProperties(prefix = "spring.datasource.jzgdb") public DataSource jzgdbDataSource() { return DruidDataSourceBuilder.create().build(); } @Bean(name = "jzgdbSqlSessionFactory") public SqlSessionFactory jzgdbSqlSessionFactory(@Qualifier("jzgdbDataSource") DataSource datasource) throws Exception { MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean(); //configuration配置bean MybatisConfiguration configuration = new MybatisConfiguration(); configuration.setMapUnderscoreToCamelCase(true); configuration.setCacheEnabled(false); // 配置打印sql语句s configuration.setLogImpl(StdOutImpl.class); // 添加自定义SQL注入 bean.setConfiguration(configuration); //插件对象 MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor(); //分页插件 mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); bean.setDataSource(datasource); // 设置mybatis的xml所在位置 bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/modules/jzgdb/*/*.xml")); bean.setPlugins(mybatisPlusInterceptor); return bean.getObject(); } @Bean("jzgdbSqlSessionTemplate") public SqlSessionTemplate jzgdbSqlSessionTemplate( @Qualifier("jzgdbSqlSessionFactory") SqlSessionFactory sessionFactory) { return new SqlSessionTemplate(sessionFactory); } @Bean("jzgdbTransactionManager") public PlatformTransactionManager jzgdbTransactionManager(@Qualifier("jzgdbDataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } }