jfinal多数据源问题

zhl0635 发布于 2015/01/15 10:54
阅读 2K+
收藏 4

@JFinal 你好,想跟你请教个问题:

我现在用的是mysql,里边用到了多个数据库,假设每个库中都有user表

1、那就需要new多个c3p0plugin?

C3p0Plugin c3p0Plugin = new C3p0Plugin(getProperty("jdbcUrl1"), getProperty("user1"), getProperty("password1").trim());
C3p0Plugin c3p0Plugin2 = new C3p0Plugin(getProperty("jdbcUrl12"), getProperty("user2"), getProperty("password2").trim());
me.add(c3p0Plugin);
me.add(c3p0Plugin2);

2、ActiveRecordPlugin 需要new一个还是多个?

1)如果new一个的话,因为我每个数据库中都有一个user表,

arp.addMapping("user", User.class); // 映射user表到 User模型

那我User user = User.dao.findById(25, "name, age"); ,这样查询的是哪个库

2)如果new多个的话,是不是这样写:

ActiveRecordPlugin arpMysqlDB1 = new ActiveRecordPlugin("mysql1", dsMysql); 
me.add(arpMysqlDB1); 
arpMysqlDB1.addMapping("user", User.class); 

ActiveRecordPlugin arpMysqlDB2 = new ActiveRecordPlugin("mysql2", dsMysql); 
me.add(arpMysqlDB2); 
arpMysqlDB2.addMapping("user", User.class); 

查询的时候:

List<Record> users1 = Db.use("mysql1").find("select * from user"); 

List<Record> users2 = Db.use("mysql2").find("select * from user"); 

感谢指点

加载中
0
JFinal
JFinal

1:有多少个数据源就要 new 多少个 C3p0Plugin 或者 DruidPlugin

2:每个 ActiveRecordPlugin 对应一个数据源,所以多个数据源之下,也要 new 出多个 ActiveRecordPlugin 对象

3:每个 Model 唯一对应一个 ActiveRecordPlugin 对象,且只能被某一个 ActiveRecordPlugin 对象使用 addMapping(...) 进行映射,所以同一个 Model 不能添加到不同的 ActiveRecrodPlugin

4:Model 唯一对应一个 ActiveRecordPlugin ,ActiveRecordPlugin 唯一对应一个 C3p0Plugin,推导出 Model 唯一对应一个数据源,所以 Model 与数据源的对应关系是自动化解决的,因为在构建 ActiveRecordPlugin 对象的时候就已经确立了对应关系

5:而 Db + Record 模式没有像 Model 一样建立与数据源的一一对应的关系,所以在多数据源之下需要使用 Db.use(configName) 来指定数据源

返回顶部
顶部