Springboot+Neo4j+Mysql多数据源配置(一)

mysql我们采用mybatis框架

首先看下我们pom.xml文件的引用

       

            org.springframework.boot

            spring-boot-starter

       

       

            org.springframework.boot

            spring-boot-starter-test

            test

       

       

            org.projectlombok

            lombok

            1.18.2

       

       

            org.springframework.boot

            spring-boot-starter-web

       

       

       

            org.mybatis.generator

            mybatis-generator-core

            1.3.4

       

       

            org.mybatis.spring.boot

            mybatis-spring-boot-starter

            2.1.0

       

       

            com.alibaba

            druid

            1.1.6

       

       

       

            mysql

            mysql-connector-java

            5.1.47

            runtime

       

       

       

            org.springframework.boot

            spring-boot-starter-data-neo4j

       

       

       

            io.github.lukehutch

            fast-classpath-scanner

            2.21

       

       

            org.springframework.boot

            spring-boot-starter-data-jpa

       

       

            com.google.guava

            guava

            27.0.1-jre

       

       

       

            commons-net

            commons-net

            3.3

       

       

            org.apache.poi

            poi

            3.17

       

       

            org.apache.poi

            poi-ooxml

            3.17

       

       

            org.springframework

            spring-test

            5.1.9.RELEASE

            compile

       

   


    io.github.lukehutch    fast-classpath-scanner    2.21 
 

接着修改我们的配置文件加入mysql地址

spring:

  datasource:

    industrygraph:

      url: jdbc:mysql://127.0.0.1:3306/industry_graph?useSSL=false&autoReconnect=true&failOverReadOnly=false&characterEncoding=utf-8&useUnicode=true&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8

      username: myang

      password: 123456

      driver-class-name: com.mysql.jdbc.Driver

  data:

    neo4j:

      uri: bolt://127.0.0.1:7687

      username: neo4j

      password: 123456

接着配置我们的mysql的数据源

/**

* @Author Created by YangMeng on 2021/3/3.

*/

@Configuration

@MapperScan(basePackages = {"com.abcft.industrygraphmanagement.dao.mysql"}, sqlSessionTemplateRef = "industrygraphSqlSessionTemplate")

public class DatabaseSourceConfig {

    @Bean(name = "industrygraphDataSource")

    @ConfigurationProperties(prefix = "spring.datasource.industrygraph")

    public DataSource industrygraphDataSource() {

        //指定使用DruidDataSource

        return DataSourceBuilder.create().type(DruidDataSource.class).build();

    }

    @Bean

    public SqlSessionFactory industrygraphSqlSessionFactory(@Qualifier("industrygraphDataSource") DataSource dataSource) throws Exception {

        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();

        bean.setDataSource(dataSource);

        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/graph/*.xml"));

        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();

        configuration.setMapUnderscoreToCamelCase(true);

        bean.setConfiguration(configuration);

        return bean.getObject();

    }

    @Bean

    public DataSourceTransactionManager industrygraphTransactionManager(@Qualifier("industrygraphDataSource") DataSource dataSource) {

        return new DataSourceTransactionManager(dataSource);

    }

    @Bean

    public SqlSessionTemplate industrygraphSqlSessionTemplate(@Qualifier("industrygraphSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {

        return new SqlSessionTemplate(sqlSessionFactory);

    }

因为neo4j也是支持事务的,所以我们在事务这块要区分开mysql的事务和neo4j的事务,通过@EnableTransactionManagement 来开启事务,然后我们加入以下配置

@Aspect

@Configuration

@EnableTransactionManagement

@Slf4j

public class Neo4jConfig {

    /**

    * 定义neo4j事务

    *

    * @param sessionFactory

    * @return

    */

    @Bean("neo4jTransactionManager")

    public Neo4jTransactionManager neo4jTransactionManager(SessionFactory sessionFactory) {

        return new Neo4jTransactionManager(sessionFactory);

    }

    /**

    * 定义mysql 事务

    *

    * @param emf

    * @return

    */

    @Bean("transactionManager")

    public JpaTransactionManager jpaTransactionManager(EntityManagerFactory emf) {

        return new JpaTransactionManager(emf);

    }

}

然后我们在service层使用的时候指定相应的事务就行了

@Override

    @Transactional(transactionManager = "neo4jTransactionManager")

    public void updateCompanyEntry(CompanyEntryCondition companyEntryCondition) throws Exception {

    }

其实neo4j和mysql配置主要在于事务的配置和mapper路径的查找,希望本篇读完大家可以亲手配置跑一下程序试试,我这里就不贴出来。



- 本期完 -

为方便看最新内容,记得关注哦!

你可能感兴趣的:(Springboot+Neo4j+Mysql多数据源配置(一))