您的位置:首页 > 其它

Jfinal如何正确使用多数据源?

2013-11-22 14:24 190 查看
JFinal 为了省代码达到极速开发,所以只支持一个主数据源,同时支持多个辅数据源。所谓主数据源是指当你在使用JFinal对数据库操作时,如果没有明确指定数据源,那么默认为使用了主数据源。
主数据源可以在两个地方设置,其一是在 new ActiveRecordPlugin 时指定,其二是使用DbKit.setDataSource(DataSource ds)来指定。ActiverecordPlugin 中所依赖的主数据源,以及数据库配置都是共享的,所以 new 出多个 ActiveRecordPlugin来是没有意义的。主数据源可以通过DbKit.setDataSource(...)在程序中动态指定。
C3P0Plugin 可以创建多个对象,这是有意义的,所以楼主上面给的代码是有意义的。
Oracle 在保存数据时 primaryKey 是指主键名称,例如可以是"ID",而Record这个参数中,要给定相应的主键值,如new Record().set("ID",123);

以下给出多数据源的使用例子代码,首先是初始化代码:

01
public
void
configPlugin(Plugins
me) {
02
//
C3p0Plugin可以有多个对象存在
03
C3p0Plugin
c3p0Plugin =
new
C3p0Plugin(...);
04
C3p0Plugin
c3p0Plugin2 =
new
C3p0Plugin(...);
05
me.add(c3p0Plugin);
06
me.add(c3p0Plugin2);
07
08
//
ActiveRecordPlugin 只能有一个对象存在
09
ActiveRecordPlugin
arp =
new
ActiveRecordPlugin(c3p0Plugin);
10
me.add(arp);
11
arp.addMapping(
"vote"
,
Vote.
class
);
12
}
以下是多数据源使用代码:

1
//
没有指定数据源的时候,默认使用是的主数据源
2
Vote
vote = Vote.dao.findById(
123
);
3
4
//
指定了数据源,默认使用的是辅数据源,注意下面方法的第一个参数都指定了数据源
5
List<Record>
votes = Db.find(c3p0Plugin2.getDataSource(),
"select
* from vote"
);
6
Db.save(C3p0Plugin2.getDataSource(),
"vote"
,
"ID"
,
new
Record().set(
"ID"
,
888
).set(...).set(...));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: