springboot+mybatis+druid 多数据源
1. 创建maven项目,引入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.5</version> <!--低版本可以解决mybatis不支持LocalDateTime问题--> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!--druid数据源 start--> <!--配置druid多数据源时,要使用druid-spring-boot-starter包,否则会报错 java: 程序包com.alibaba.druid.spring.boot.autoconfigure不存在 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.22</version> </dependency> <!--druid数据源 end-->
2. 配置多数据源
配置数据库连接 application.ymlspring: datasource: # 数据源1 url: jdbc:mysql://****:3306/dataSourceManagement?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true username: root password: root type: com.alibaba.druid.pool.DruidDataSource #数据源2 icp: url: jdbc:mysql://****:3306/icp_rule?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true username: root password: root type: com.alibaba.druid.pool.DruidDataSource
数据源配置类(druid配置,mybatis配置),通过 @MapperScan(basePackages = "com.example.datasource.mapper",sqlSessionTemplateRef = "primarySqlSessionTemplate") 注解将数据源与mapper文件对应
数据源1配置类@Configuration @MapperScan(basePackages = "com.example.datasource.mapper",sqlSessionTemplateRef = "primarySqlSessionTemplate") public class PrimaryDataSourceConfig { /** * 数据源配置 * * @return */ @Bean @ConfigurationProperties(prefix = "spring.datasource") DataSource primaryDs() { // 如果使用 druid 作为连接池,则需要使用DruidDataSourceBuilder return DruidDataSourceBuilder.create().build(); } /** * mybatis配置SqlSessionFactory和SqlSessionTemplate * * @return */ @Bean SqlSessionFactory primarySqlSessionFactory() { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(primaryDs()); SqlSessionFactory sqlSessionFactory = null; try { sqlSessionFactory = sqlSessionFactoryBean.getObject(); } catch (Exception e) { e.printStackTrace(); } return sqlSessionFactory; } @Bean SqlSessionTemplate primarySqlSessionTemplate() { return new SqlSessionTemplate(primarySqlSessionFactory()); } }数据源2配置类
@Configuration @MapperScan(basePackages = "com.example.datasource.icpMapper", sqlSessionTemplateRef = "icpSqlSessionTemplate") public class IcpDataSourceConfig { /** * 数据源配置 * * @return */ @Bean @ConfigurationProperties(prefix = "spring.datasource.icp") DataSource icpDs() { // 如果使用 druid 作为连接池,则需要使用DruidDataSourceBuilder return DruidDataSourceBuilder.create().build(); } /** * mybatis配置SqlSessionFactory和SqlSessionTemplate * * @return */ @Bean SqlSessionFactory icpSqlSessionFactory() { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(icpDs()); SqlSessionFactory sqlSessionFactory = null; try { sqlSessionFactory = sqlSessionFactoryBean.getObject(); } catch (Exception e) { e.printStackTrace(); } return sqlSessionFactory; } @Bean SqlSessionTemplate icpSqlSessionTemplate() { return new SqlSessionTemplate(icpSqlSessionFactory()); } }
完成,接下来编写mapper,数据源1的mapper写在 mapper 目录下,数据源2的mapper写在 icpMapper 目录项,再service层注入即可使用
springboot整合mybatis+mysql+druid 多个数据源
标签:public prim pac conf cep stack ges password temp
查看更多关于springboot整合mybatis+mysql+druid 多个数据源的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did117389