当前位置:K88软件开发文章中心网站服务器框架JFinal → 文章内容

5.12 多数据源支持

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-25 14:22:02

由 厦门小懒懒 创建, 最后一次修改 2016-10-06 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数据源中的 userList<Record> users = Db.use("mysql").find("select * from user");// 查询 dsOracle数据源中的 blogList<Record> blogs = 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 常量来设置主配置。

5.12 多数据源支持