zoukankan      html  css  js  c++  java
  • springboot配置多数据源

    springboot配置多数据源

    1.pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>2.1.6.RELEASE</version>
    		<relativePath/> <!-- lookup parent from repository -->
    	</parent>
    	<groupId>com.cykj</groupId>
    	<artifactId>reports</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<name>reports</name>
    	<packaging>war</packaging>
    	<description>Demo project for Spring Boot</description>
    
    	<properties>
    		<java.version>1.8</java.version>
    	</properties>
    
    	<dependencies>
    		<!--引入web场景-->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    
    		<!--springboot的jdbc场景启动器-->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-jdbc</artifactId>
    		</dependency>
    		<!--springboot的mybatis启动器-->
    		<dependency>
    			<groupId>org.mybatis.spring.boot</groupId>
    			<artifactId>mybatis-spring-boot-starter</artifactId>
    			<version>2.0.1</version>
    		</dependency>
    		<!--引入mysql的jar包-->
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<version>8.0.15</version>
    			<scope>runtime</scope>
    		</dependency>
            
    		<!--引入lombok依赖-->
    		<dependency>
    			<groupId>org.projectlombok</groupId>
    			<artifactId>lombok</artifactId>
    			<version>1.16.18</version>
    		</dependency>
    
    		<!--热部署-->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-devtools</artifactId>
    			<optional>true</optional>
    			<scope>true</scope>
    		</dependency>
    		<dependency>
    			<groupId>com.vaadin.external.google</groupId>
    			<artifactId>android-json</artifactId>
    			<version>0.0.20131108.vaadin1</version>
    		</dependency>
    
    		<!--POI-->
    		<dependency>
    			<groupId>org.apache.poi</groupId>
    			<artifactId>poi</artifactId>
    			<version>3.16</version>
    		</dependency>
    		<dependency>
    			<groupId>org.apache.poi</groupId>
    			<artifactId>poi-ooxml</artifactId>
    			<version>3.14</version>
    		</dependency>
    
    		<!--文件上传-->
    		<dependency>
    			<groupId>commons-fileupload</groupId>
    			<artifactId>commons-fileupload</artifactId>
    			<version>1.3.1</version>
    		</dependency>
    		<dependency>
    			<groupId>commons-io</groupId>
    			<artifactId>commons-io</artifactId>
    			<version>2.4</version>
    		</dependency>
    
    		<!--引入fastjson依赖-->
    		<!--<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>fastjson</artifactId>
    			<version>1.2.47</version>
    		</dependency>-->
    
    		<!--json-->
    		<!--<dependency>
    			<groupId>net.sf.json-lib</groupId>
    			<artifactId>json-lib</artifactId>
    			<version>2.2.3</version>
    			<classifier>jdk15</classifier>&lt;!&ndash; jdk版本 &ndash;&gt;
    		</dependency>-->
    
    		<!--springboot的test场景-->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-test</artifactId>
    			<scope>test</scope>
    		</dependency>
    	</dependencies>
    
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
    			</plugin>
    		</plugins>
    	</build>
    
    </project>
    
    

    2.application.yml

    #10.150.150.192     数据库: reports   用户名密码: report   report
    #10.150.150.192   数据库:  monkey    username:monkey   password:monkey   port:3306
    spring:
      # 配置数据库连接
      datasource:
        main:
          jdbc-url: jdbc:mysql://10.150.150.192:3306/reports?useUnicode=true&characterEncoding=utf-8
          username: report
          password: report
          driver-class-name: com.mysql.cj.jdbc.Driver	#mysql版本为8.0时
        second:
          jdbc-url: jdbc:mysql://10.150.150.192:3306/monkey?useUnicode=true&characterEncoding=utf-8
          username: monkey
          password: monkey
          driver-class-name: com.mysql.cj.jdbc.Driver	#mysql版本为8.0时
    #  jackson:
    #      serialization:
    #        write-dates-as-timestamps: false
    #      jackson:
    #        date-format: yyyy-MM-dd HH:mm:ss
    #        time-zone: GMT+8
    # 配置端口
    server:
      port: 8001
    

    3.DataSourceMainConfig.java

    package com.cykj.reports.config;
    
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionFactoryBean;
    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.boot.jdbc.DataSourceBuilder;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    
    import javax.sql.DataSource;
    
    @Configuration
    @MapperScan(basePackages = "com.cykj.reports.mapper.main", sqlSessionFactoryRef = "mainSqlSessionFactory")
    public class DataSourceMainConfig {
    
        @Bean(name = "mainDataSource")
        @ConfigurationProperties(prefix = "spring.datasource.main")
        @Primary
        public DataSource db1DataSource() {
            return DataSourceBuilder.create ().build ();
        }
    
        @Bean(name = "mainSqlSessionFactory")
        @Primary
        public SqlSessionFactory db1SqlSessionFactory(@Qualifier("mainDataSource") DataSource dataSource) throws Exception {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean ();
            bean.setDataSource ( dataSource );
            bean.setTypeAliasesPackage("com.cykj.reports.domain.main");
            bean.setMapperLocations(new PathMatchingResourcePatternResolver()
                    .getResources("classpath*:mybatis/main/*.xml"));
            return bean.getObject ();
        }
    
        @Bean(name = "mainTransactionManager")
        @Primary
        public DataSourceTransactionManager db1TransactionManager(@Qualifier("mainDataSource") DataSource dataSource) {
            return new DataSourceTransactionManager ( dataSource );
        }
    
        @Bean(name = "mainSqlSessionTemplate")
        @Primary
        public SqlSessionTemplate db1SqlSessionTemplate(@Qualifier("mainSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
            return new SqlSessionTemplate ( sqlSessionFactory );
        }
    }
    

    4.DataSourceSecondConfig.java

    package com.cykj.reports.config;
    
    
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionFactoryBean;
    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.boot.jdbc.DataSourceBuilder;
    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 javax.sql.DataSource;
    
    @Configuration
    @MapperScan(basePackages = "com.cykj.reports.mapper.second", sqlSessionFactoryRef = "secondSqlSessionFactory")
    public class DataSourceSecondConfig {
    
        @Bean(name = "secondDataSource")
        @ConfigurationProperties(prefix = "spring.datasource.second")
        public DataSource secondDataSource() {
            return DataSourceBuilder.create ().build ();
        }
    
        @Bean(name = "secondSqlSessionFactory")
        public SqlSessionFactory secondSqlSessionFactory(@Qualifier("secondDataSource") DataSource dataSource) throws Exception {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean ();
            bean.setDataSource ( dataSource );
            bean.setTypeAliasesPackage("com.cykj.reports.domain.second");
            bean.setMapperLocations(new PathMatchingResourcePatternResolver()
                    .getResources("classpath*:mybatis/second/*.xml"));
            return bean.getObject ();
        }
    
        @Bean(name = "secondTransactionManager")
        public DataSourceTransactionManager secondTransactionManager(@Qualifier("secondDataSource") DataSource dataSource) {
            return new DataSourceTransactionManager ( dataSource );
        }
    
        @Bean(name = "secondSqlSessionTemplate")
        public SqlSessionTemplate secondSqlSessionTemplate(@Qualifier("secondSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
            return new SqlSessionTemplate ( sqlSessionFactory );
        }
    }
    

    5.application启动类

    package com.cykj.reports;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    //不需要下面的注解扫描
    //@MapperScan(basePackages = {"com.cykj.reports.mapper"})
    public class ReportsApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(ReportsApplication.class, args);
    	}
    
    }
    

    6.文件存放目录

  • 相关阅读:
    High availability: Oracle RAC vs. RAC One Node vs. Data Guard
    ORACLE 12C RAC修改ocr/votedisk/asm spfile所在磁盘组名称
    Oracle性能排查小案例
    Oracle技术支持是如何分析数据库性能问题的
    【翻译】19C Oracle 安装指导
    Install Grid Infrastructure 12c On Standalone Server
    Linux平台oracle 11g单实例 + ASM存储 安装部署
    HOW TO USE ORACLE RESTART IN ORACLE 11GR2
    单机安装Oracle RAC (zt)
    flink on yarn启动失败
  • 原文地址:https://www.cnblogs.com/itzlg/p/11287408.html
Copyright © 2011-2022 走看看