
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mybatis--><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.4</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.0</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.6</version></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version><scope>runtime</scope></dependency><!--neo4j--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-neo4j</artifactId></dependency><!-- 扫描路径,版本为2.21b不然的话在服务器上 neo4j mapper不生效 --><dependency><groupId>io.github.lukehutch</groupId><artifactId>fast-classpath-scanner</artifactId><version>2.21</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>27.0.1-jre</version></dependency><!--ftp--><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.3</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.1.9.RELEASE</version><scope>compile</scope></dependency></dependencies>
<dependency> <groupId>io.github.lukehutch</groupId> <artifactId>fast-classpath-scanner</artifactId> <version>2.21</version></dependency>
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%2B8username: myangpassword: 123456driver-class-name: com.mysql.jdbc.Driverdata:neo4j:uri: bolt://127.0.0.1:7687username: neo4jpassword: 123456
/*** @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() {//指定使用DruidDataSourcereturn DataSourceBuilder.create().type(DruidDataSource.class).build();}@Beanpublic 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();}@Beanpublic DataSourceTransactionManager industrygraphTransactionManager(@Qualifier("industrygraphDataSource") DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}@Beanpublic SqlSessionTemplate industrygraphSqlSessionTemplate(@Qualifier("industrygraphSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {return new SqlSessionTemplate(sqlSessionFactory);}
因为neo4j也是支持事务的,所以我们在事务这块要区分开mysql的事务和neo4j的事务,通过@EnableTransactionManagement 来开启事务,然后我们加入以下配置
@Aspect@Configuration@EnableTransactionManagement@Slf4jpublic 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);}}
@Override@Transactional(transactionManager = "neo4jTransactionManager")public void updateCompanyEntry(CompanyEntryCondition companyEntryCondition) throws Exception {}
在实际的项目中业务可能比较复杂,涉及到数据库混合操作,比如一个方法里既有neo4j的更新又有mysql的更新,这样就涉及了多事务共同使用,下篇文章我们来说说批量事务怎么定义和提交,今天就到这里了,拜拜
。 有疑问请点赞和留言哈
,我会及时回复。
- 本期完 -
为方便看最新内容,记得关注哦!

文章转载自Neo4j权威指南,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




