1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fusheng_zhang-paoding-rose-jade

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
MultipleDataSources.md 2.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
fusheng.zhang Отправлено 21.06.2022 13:39 dbe4bb7

多数据源文档

以下实现均基于spring boot


<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-dbcp2</artifactId>
    <version>2.9.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<dependency>
<groupId>cn.zhangfusheng</groupId>
<artifactId>paoding-rose-jade</artifactId>
<version>5.0.5</version>
</dependency>

利用Dao.catlog实现动态数据源

import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;

public class DatasourceConfig {
    @Bean("jade.dataSourceFactory.db1")
    public DataSourceFactory db1() {
        BasicDataSource dataSource = DataSourceBuilder.create(this.getClass().getClassLoader())
                .type(BasicDataSource.class)
                .driverClassName("com.mysql.cj.jdbc.Driver")
                .url("jdbc:mysql://192.168.18.191:3306/open-server?useSSL=true&serverTimezone=GMT%2B8&useUnicode=true&autoReconnect=true&characterEncoding=UTF-8")
                .username("root")
                .password("1234").build();
        return new SimpleDataSourceFactory(dataSource);
    }

    @Bean("jade.dataSourceFactory.db2")
    public DataSourceFactory db2() {
        BasicDataSource dataSource = DataSourceBuilder.create(this.getClass().getClassLoader())
                .type(BasicDataSource.class)
                .driverClassName("com.mysql.cj.jdbc.Driver")
                .url("jdbc:mysql://192.168.18.191:3306/user-server?useSSL=true&serverTimezone=GMT%2B8&useUnicode=true&autoReconnect=true&characterEncoding=UTF-8")
                .username("root")
                .password("1234").build();
        return new SimpleDataSourceFactory(dataSource);
    }
}

@DAO(catalog = "db1")
public interface TbAddressDao {
    // 会查询db1 对应的open-server
    @SQL("select * from tb_address limit 1")
    Map<String, Object> findOne();
}

@DAO(catalog = "db2")
public interface TbUserDao {
    // 会查询db2 对应的 user-server
    @SQL("select * from tb_user limit 1")
    Map<Object, Object> findOne();
}

读写分离

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/fusheng_zhang-paoding-rose-jade.git
git@api.gitlife.ru:oschina-mirror/fusheng_zhang-paoding-rose-jade.git
oschina-mirror
fusheng_zhang-paoding-rose-jade
fusheng_zhang-paoding-rose-jade
master