jfinal多数据源ActiveRecordPlugin
2024-08-25 06:14:30
因为项目需要从多个数据库取数据,所以需要配置多个数据源
尝试了ActiveRecordPlugin和DruidPlugin的多数据源,但是因为DruidPlugin在本地一直报错一个很奇怪的语法错误,所以就选用了ActiveRecordPlugin
总的来说就是多个数据源配置多个ActiveRecordPlugin
直接使用如下代码即可,不过因为我是太多的数据源不想一个个定义plugin,所以就选用循环读取文件的形式
int i=0;
while(true){
if(PropKit.get("jdbcUrl"+i)==null){
break;
}else{
C3p0Plugin cp = new C3p0Plugin(
PropKit.get("jdbcUrl"+i),
PropKit.get("user"+i),
PropKit.get("password"+i),
PropKit.get("driver"+i));
cp.setInitialPoolSize(3);
cp.setMaxIdleTime(10);
cp.setMinPoolSize(3);
cp.setMaxIdleTime(6);
me.add(cp); ActiveRecordPlugin arp = null;
if(i>0){
arp = new ActiveRecordPlugin("db"+i,cp);
}else{
arp = new ActiveRecordPlugin(cp);
}
// arp2.setDialect(new AnsiSqlDialect()); 连接 sql2008 特有的解决字符 问题
if(PropKit.get("driver"+i).indexOf("mysql")>-1){
arp.setDialect(new MysqlDialect());///mysql
} else{
arp.setDialect(new SqlServerDialect());///sqlserver
}
me.add(arp); //配置数据表映射写到一个文件中
if(PropKit.get("state"+i).indexOf("pro")>-1){
DbMappingKit.mapping(arp);
}else if(PropKit.get("state"+i).indexOf("fb")>-1){
FbMappingKit.mapping(arp);
}else if(PropKit.get("state"+i).indexOf("wx")>-1){
WxMappingKit.mapping(arp);
}else if(PropKit.get("state"+i).indexOf("center")>-1){
TaskCenterMappingKit.mapping(arp);
} }
i++;
}
其中
arp = new ActiveRecordPlugin("db"+i,cp); 是给除第一个以外的其他链接建立连接别名。
我们常用的DB.update(sql),默认使用么有别名的第一个数据源。 Db.use("db1").update(sql); 这样可以使用其他数据源 与http://jingyan.baidu.com/article/7f41ecec3b2b0e593d095c35.html类似,可以参考一下。
最新文章
- cloudera learning6:Hadoop Security
- Python【3】-字典dic和集合set
- 容器--IdentityHashMap
- WordPress FunCaptcha插件跨站脚本漏洞
- img图片元素下多余空白解决方案
- avalon2学习心得(1)
- Delphi与C++的语法区别(六点区别) good
- Servlet容器模型(四)ServletConfig、ServletContext
- ios系统视频播放器MPMoviePlayerController应用遇到的坑
- C++左值
- python接口自动化(十九)--Json 数据处理---实战(详解)
- IOS中armv7,armv7s,arm64以及i386和x86_64讲解
- python将文本转化成语音并播放
- 解码 id_token
- mac一些设置
- 用ASP.NET实现下载远程图片保存到本地的方法 保存抓取远程图片的方法
- java struts2入门学习---常用标签学习总结
- vue学习之五生命周期
- ELK高可用搭建---Elasticsearch配置(1)
- Opengl---gluLookAt函数详解(转)