springboot整合mysql5.7_springboot整合jpa和mybatis实现主从复制

本文档详细介绍了如何在SpringBoot应用中整合JPA和Mybatis,并实现MySQL主从复制。配置包括数据源设置、多数据源路由、事务管理以及读写分离。通过示例代码展示了数据源配置、JPA和Mybatis的配置、切面处理和枚举类,以及数据库的主从复制配置。
摘要由CSDN通过智能技术生成

百度多方参考终于配出我自己的了,以下仅供参考

代码

首先数据源配置

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#第一个数据源

spring.datasource.master.jdbc-url=jdbc:mysql://localhost:3307/dab?useUnicode=true&characterEncoding=utf-8

spring.datasource.master.username=root

spring.datasource.master.password=root

#第二个数据源只读账户

spring.datasource.slave1.jdbc-url=jdbc:mysql://localhost:3308/dab?useUnicode=true&characterEncoding=utf-8

spring.datasource.slave1.username=root

spring.datasource.slave1.password=root

#第三个数据源只读账户

spring.datasource.slave2.jdbc-url=jdbc:mysql://localhost:3309/dab?useUnicode=true&characterEncoding=utf-8

spring.datasource.slave2.username=root

spring.datasource.slave2.password=root

#连接池参数,初始数、最大数、最小数、获取连接等待超时时间(毫秒)

spring.datasource.initial-size=5spring.datasource.max-active=20spring.datasource.min-idle=5spring.datasource.max-wait=60000

启动类

我的dao和mapper分开的dao放的JPA的持久层,mapper放的mybatis的持久层

@EnableSwagger2

@SpringBootApplication

@EnableJpaRepositories(basePackages= { "com.bling.dab.dao" }, entityManagerFactoryRef = "entityManagerFactoryPrimary", transactionManagerRef = "transactionManagerPrimary")

@EnableTransactionManagement

@MapperScan("com.bling.dab.mapper")public classDabApplication {public static voidmain(String[] args) {

SpringApplication.run(DabApplication.class, args);

System.out.println("dab启动完成--------OK!");

}

}

多数据源jpa和mybatis 配置

jpa需要比mybatis多自定义一个配置类JpaEntityManager,其中的俩个bean需要在这里依赖,这个注解也可以写在JpaEntityManager配置类上,我写在启动类上了效果一样

@EnableJpaRepositories(basePackages = { "com.bling.dab.dao" }, entityManagerFactoryRef = "entityManagerFactoryPrimary", transactionManagerRef = "transactionManagerPrimary")

/***@author: hxp

* @date: 2019/6/18 10:54

* @description:*/@Configuration

@EnableConfigurationProperties(JpaProperties.class)

@AutoConfigureAfter(DataSourceConfig.class)public classJpaEntityManager {

@AutowiredprivateJpaProperties jpaProperties;

@AutowiredprivateDataSource myRoutingDataSource;

@Bean(name= "entityManagerFactoryBean")publicLocalContainerEntityManagerFactoryBean entityManagerFactoryBean(EntityManagerFactoryBuilder builder) {

Map properties =jpaProperties.getProperties();//要设置这个属性,实现 CamelCase -> UnderScore 的转换

properties.put("hibernate.physical_naming_strategy","org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy");returnbuilder

.dataSource(myRoutingDataSource)

.properties(properties)

.packages("com.bling.dab.domain")

.persistenceUnit("myPersistenceUnit")

.build();

}

@Primary

@Bean(name= "entityManagerFactoryPrimary")publicEntityManagerFactory entityManagerFactory(EntityManagerFactoryBuilder builder) {return this.entityManagerFactoryBean(builder).getObject();

}

@Primary

@Bean(name= "transactionManagerPrimary")publicPlatformTransactionManager transactionManager(EntityManagerFactoryBuilder builder) {return newJpaTransactionManager(entityManagerFactory(builder));

}

}

然后是mybati和jpa都需要的数据源配置

@Configurationpublic classDataSourceConfig {

@Bean(name= "masterDataSource")

@Primary

@ConfigurationProperties(prefi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值