jdbcTemplate1.update(“insert into user(id,name,age) values(?, ?, ?)”, 2, “bbb”, 30);
// 往第二个数据源中插入一条数据,若插入的是第一个数据源,则会主键冲突报错
jdbcTemplate2.update(“insert into user(id,name,age) values(?, ?, ?)”, 1, “aaa”, 20);
// 查一下第一个数据源中是否有两条数据,验证插入是否成功
Assert.assertEquals(“2”, jdbcTemplate1.queryForObject(“select count(1) from user”, String.class));
// 查一下第一个数据源中是否有两条数据,验证插入是否成功
Assert.assertEquals(“1”, jdbcTemplate2.queryForObject(“select count(1) from user”, String.class));
}
}
Spring-data-jpa支持
对于数据源的配置可以沿用上例中DataSourceConfig
的实现。
新增对第一数据源的JPA配置,注意两处注释的地方,用于指定数据源对应的Entity
实体和Repository
定义位置,用@Primary
区分主数据源。
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef=“entityManagerFactoryPrimary”,
transactionManagerRef=“transactionManagerPrimary”,
basePackages= { “com.didispace.domain.p” }) //设置Repository所在位置
public class PrimaryConfig {
@Autowired @Qualifier(“primaryDataSource”)
private DataSource primaryDataSource;
@Primary
@Bean(name = “entityManagerPrimary”)
public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
return entityManagerFactoryPrimary(builder).getObject().createEntityManager();
}
@Primary
@Bean(name = “entityManagerFactoryPrimary”)
public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary (EntityManagerFactoryBuilder bui