c3p0plugin mysql,四十八、5.12 多数据源支持

ActiveRecordPlugin 可同时支持多数据源、多方言、多缓存、多事务级别等特性,对每个 ActiveRecordPlugin 可进行彼此独立的配置。简言之 JFinal 可以同时使用多数据源,并且可 以针对这多个数据源配置独立的方言、缓存、事务级别等。

当使用多数据源时,只需要对每个 ActiveRecordPlugin 指定一个 configName 即可,如下是代码示例:

public void configPlugin(Plugins me) {

// mysql 数据源

C3p0Plugin dsMysql = new C3p0Plugin(…); me.add(dsMysql);

// mysql ActiveRecrodPlugin 实例,并指定configName为 mysql ActiveRecordPlugin arpMysql = new ActiveRecordPlugin(“mysql”, dsMysql); me.add(arpMysql);

arpMysql.setCache( new EhCache()); arpMysql.addMapping(“user”, User. class);

// oracle 数据源

C3p0Plugin dsOracle = new C3p0Plugin(…); me.add(dsOracle);

// oracle ActiveRecrodPlugin 实例,并指定configName为 oracle ActiveRecordPlugin arpOracle = new ActiveRecordPlugin(“oracle”, dsOracle); me.add(arpOracle);

arpOracle.setDialect( new OracleDialect()); arpOracle.setTransactionLevel(8); arpOracle.addMapping(“blog”, Blog. class);

}

以上代码创建了创了两个 ActiveRecordPlugin 实例 arpMysql 与 arpOrace,特别注意创建实 例的同时指定其 configName 分别为 mysql 与 oracle。arpMysql 与 arpOracle 分别映射了不同的Model,配置了不同的方言。

对于 Model 的使用,不同的 Model 会自动找到其所属的 ActiveRecrodPlugin 实例以及相关 配置进行数据库操作。假如希望同一个 Model 能够切换到不同的数据源上使用,也极度方便, 这种用法非常适合不同数据源中的 table 拥有相同表结构的情况,开发者希望用同一个 Model 来操作这些相同表结构的 table,以下是示例代码:

public void multiDsModel() {

// 默认使用arp.addMapping(…)时关联起来的数据源

Blog blog = Blog. me.findById(123);

// 只需调用一次use方法即可切换到另一数据源上去

blog.use(“backupDatabase”).save();

}

上例中的代码,blog.use(“backupDatabase”)方法切换数据源到 backupDatabase 并直接将数 据保存起来。

特别注意:只有在同一个 Model 希望对应到多个数据源的 table 时才需要使用 use 方法,如果 同一个 Model 唯一对应一个数据源的一个 table,那么数据源的切换是自动的,无需使用 use 方法。

对于 Db + Record 的使用,数据源的切换需要使用 Db.use(cnfigName)方法得到数据库操作 对象,然后就可以进行数据库操作了,以下是代码示例:

// 查询 dsMysql数据源中的 user

Listusers = Db.use(“mysql”). find(“select * from user”);

// 查询 dsOracle数据源中的 blog

Listblogs = Db.use(“oracle”). find(“select * from blog”);

以上两行代码,分别通过 configName 为 mysql、oracle 得到各自的数据库操作对象,然后 就可以如同单数据完全一样的方式来使用数据库操作 API 了。简言之,对于 Db + Record 来 说,多数据源相比单数据源仅需多调用一下 Db.use(configName),随后的 API 使用方式完全一 样。

注意最先创建的 ActiveRecrodPlugin 实例将会成为主数据源,可以省略 configName。最先创建的 ActiveRecrodPlugin 实例中的配置将默认成为主配置,此外还可以通过设置 configName为 DbKit.MAIN_CONFIG_NAME 常量来设置主配置。

干货推荐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用[1]和引用,以下是配置MySQL 5.7数据的步骤: 1. 在MySQL配置文件中启用多复制功能。打开MySQL配置文件(通常是my.cnf或my.ini),找到并编辑以下行: ```shell [mysqld] ... plugin-load=group_replication.so group_replication=FORCE_PLUS_PERMANENT ``` 保存并关闭配置文件。 2. 启动MySQL实例,并使用以下命令创建一个新的复制组: ```shell mysql> SET GLOBAL group_replication_bootstrap_group=ON; mysql> START GROUP_REPLICATION; mysql> SET GLOBAL group_replication_bootstrap_group=OFF; ``` 3. 使用以下命令添加其他MySQL实例到复制组中: ```shell mysql> START GROUP_REPLICATION; ``` 4. 配置每个MySQL实例的复制。对于每个实例,使用以下命令指定复制: ```shell mysql> CHANGE MASTER TO MASTER_USER='replication_user', MASTER_PASSWORD='replication_password' FOR CHANNEL 'group_replication_recovery'; ``` 5. 验证复制组的状态。使用以下命令检查复制组的状态: ```shell mysql> SELECT * FROM performance_schema.replication_group_members; ``` 6. 配置数据。使用以下命令创建一个新的数据: ```shell mysql> CREATE SOURCE my_source CONNECTION ( SOURCE_HOST='source_host', SOURCE_PORT=source_port, SOURCE_USER='source_user', SOURCE_PASSWORD='source_password', SOURCE_LOG_FILE='source_log_file', SOURCE_LOG_POS=source_log_pos ); ``` 7. 配置数据目标。使用以下命令创建一个新的数据目标: ```shell mysql> CREATE TARGET my_target CONNECTION ( TARGET_HOST='target_host', TARGET_PORT=target_port, TARGET_USER='target_user', TARGET_PASSWORD='target_password' ); ``` 8. 配置数据路由。使用以下命令将数据和数据目标连接起来: ```shell mysql> CREATE ROUTE my_route WITH REPLICATION FOR SOURCE my_source TO TARGET my_target; ``` 9. 启动数据复制。使用以下命令启动数据复制: ```shell mysql> START REPLICATION FOR ROUTE my_route; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值