1、JFinalConfig的afterJFinalStart方法,可以实现系统启动成功后,调用的方法

2、ActiveRecord 多数据源初始化

package com.meiah.common;

import java.util.List;

import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
import com.jfinal.plugin.activerecord.dialect.SqlServerDialect;
import com.jfinal.plugin.druid.DruidPlugin;
import com.meiah.common.mapping.TaskCenterMappingKit;
import com.meiah.common.mapping.WxMappingKit;
import com.meiah.model.ClusterInfoModel;
import com.meiah.model.Ics_tasks; /**
* 创建日期:2017年9月29日上午8:56:27
* 作者:zhangsp
* 系统启动成功后,构建所有集群
* version 1.0.0
*
*/
public class ActiveRecordCluster { public static void main(String[] args) {
List<ClusterInfoModel> clusterInfoList = ClusterInfoModel.dao.find("select * from clusterInfos");
for (int j = 0; j < clusterInfoList.size(); j++) {
String jdbcUrl = "";
String driver = "";
if(clusterInfoList.get(j).getInt("clusterDriver")==1){//sqlserver
jdbcUrl = "jdbc:jtds:sqlserver://"+clusterInfoList.get(j).getStr("clusterIp")+
":"+clusterInfoList.get(j).getInt("clusterPort")+
"/"+clusterInfoList.get(j).getStr("clusterSqlName")+";useLOBs=false";
driver = "net.sourceforge.jtds.jdbc.Driver";
}else{//mysql
jdbcUrl = "jdbc:mysql://"+clusterInfoList.get(j).getStr("clusterIp")+
":"+clusterInfoList.get(j).getInt("clusterPort")+
"/"+clusterInfoList.get(j).getStr("clusterSqlName")+"?useUnicode=true&characterEncoding=UTF8";
driver = "com.mysql.jdbc.Driver";
} DruidPlugin dp = new DruidPlugin(jdbcUrl, clusterInfoList.get(j).getStr("clusterUser"),
clusterInfoList.get(j).getStr("clusterPwd"), driver);
ActiveRecordPlugin arp = new ActiveRecordPlugin("db"+clusterInfoList.get(j).getInt("id"), dp);
if(clusterInfoList.get(j).getInt("clusterState") ==1){//facebook
// FbMappingKit.mapping(arp);
arp.addMapping("ics_tasks", "id", Ics_tasks.class);
SqlInfo.fbList.add("db"+clusterInfoList.get(j).getInt("id"));
SqlInfo.fbClusterList.add(clusterInfoList.get(j).getStr("clusterName"));
arp.setDialect(new SqlServerDialect());///sqlserver
System.out.println("fb:"+clusterInfoList.get(j).getInt("id")); }else if(clusterInfoList.get(j).getInt("clusterState") ==2){//微信
WxMappingKit.mapping(arp);
SqlInfo.wxList.add("db"+clusterInfoList.get(j).getInt("id"));
SqlInfo.wxClusterList.add(clusterInfoList.get(j).getStr("clusterName"));
arp.setDialect(new SqlServerDialect());///sqlserver
System.out.println("wx:"+clusterInfoList.get(j).getInt("id")); }else if(clusterInfoList.get(j).getInt("clusterState") ==0){//mysql
TaskCenterMappingKit.mapping(arp);
SqlInfo.mysqlList.add("db"+clusterInfoList.get(j).getInt("id"));
SqlInfo.myClustersqlList.add(clusterInfoList.get(j).getStr("clusterName"));
arp.setDialect(new MysqlDialect());///mysql
System.out.println("mysql:"+clusterInfoList.get(j).getInt("id")); }
// arp.addMapping("blog", Blog.class); // 与web环境唯一的不同是要手动调用一次相关插件的start()方法
dp.start();
arp.start();
} // 通过上面简单的几行代码,即可立即开始使用
// new Blog().set("title", "title").set("content", "cxt text").save();
// Blog.dao.findById(123);
} }

ActiveRecord初始化,可以实现jfinal系统启动完成后,再建立数据库连接的更多相关文章

  1. Flutter 初始化数据完成后再加载页面

    一.初始化数据完成后再加载数据 1.为了达成这个目标尝试了多种方法总是失败 在Init 和didChangeDependencies 初始化数据过也不行 @override void didChang ...

  2. IOS中录音后再播放声音太小问题解决

    1.AVAudioSessionCategory说明 1.1 AVAudioSessionCategoryAmbient 或 kAudioSessionCategory_AmbientSound 用于 ...

  3. MySQL服务正在启动或停止中,请稍候片刻后再试一次【解决方案】

    相信有些小伙伴在使用数据库的过程中会经常频繁的启动和停止MySQL服务,有时候会出现“服务正在启动或停止中,请稍候片刻后再试一次.”这样的提示,如下图所示. 于是乎想办法去解决这个问题,但是发现连强制 ...

  4. 个人学习记录1:二维数组保存到cookie后再读取

    二维数组保存到cookie后再读取 var heartsArray = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0],[0,0, ...

  5. iOS 多个异步网络请求全部返回后再执行具体逻辑的方法

    对于dispatch多个异步操作后的同步方法,以前只看过dispatch_group_async,看看这个方法的说明: * @discussion * Submits a block to a dis ...

  6. hibernate中保存一个对象后再设置此对象的属性为什么不需要调用update方法了

    hibernate中保存一个对象后再设置此对象的属性为什么不需要调用update方法了 例如session.save(user);user.setAge(20); 原因: hibernate对象的三种 ...

  7. MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult

    导出EXCEL方法总结 MVC导出数据到EXCEL的方法有很多种,常见的是: 1.采用EXCEL COM组件来动态生成XLS文件并保存到服务器上,然后转到该文件存放路径即可: 优点:可设置丰富的EXC ...

  8. JS的toFixed方法设置小数点位数后再进行计算,数据出错问题

    这个应该算作失真,或者也不算.情况就是用了toFixed后再进行相关计算,得不到预期的结果 具体看例子 比如想动态计算百分比,保留一位小数如94.4%这样子 var blobTo = 409600; ...

  9. C# 多线程join的用法,等待多个子线程结束后再执行主线程

    等待多个子线程结束后再执行主线程 class MultiThread{ #region join test public void MultiThreadTest() { Thread[] ths = ...

随机推荐

  1. lumen配置日志daily模式

    默认的日志保存模式是single 也就是单文件模式 要想改成每日的daily模式可以在bootstrap/app.php下添加: /* * 配置日志文件为每日 */ $app->configur ...

  2. 中小型研发团队架构实践三:微服务架构(MSA)

    一.MSA 简介 1.1.MSA 是什么 微服务架构 MSA 是 Microservice Architect 的简称,它是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相通讯.互相 ...

  3. textarea的maxlength属性兼容解决方案

    IE10版本的textarea才支持maxlength属性:低版本的IE都不兼容,实际上低版本的IE的市场存在率还是很高的: 所以还是很有必要来整合一套解决方案的: Jquery版本 $(functi ...

  4. Luogu3307:[SDOI2013]项链

    传送门 求每个珠子的方案数 即有序的求三元组 \((x,y,z),x,y,z\le a\) 满足 \(gcd(x,y,z)=1\) 设 \(G_i\) 表示 \(i\) 个小于等于 \(a\) 的有序 ...

  5. vue-cli构建项目 npm run build后应该怎么运行在本地查看效果

    问题: 就是 bulid 打包后,想本地看看效果,本地看不了.... 网上看到一个....   具体更多在: http://www.dabaipm.cn/static/frontend/346.htm ...

  6. (PowerShell) 重命名文件

    Get-ChildItem -Path C:\temp\test -Filter *.txt | Rename-Item -NewName {$_.Basename.Replace("Old ...

  7. C#代码处理网页关于登录的code

    作者:血饮狂龙链接:https://www.zhihu.com/question/49452639/answer/117294801来源:知乎著作权归作者所有,转载请联系作者获得授权. private ...

  8. 浅谈 unix, linux, ios, android 区别和联系

    浅谈 unix, linux, ios, android 区别和联系 网上的答案并不是很好,便从网上整理的相对专业的问答,本人很菜,大佬勿喷 UNIX 和 Linux   UNIX 操作系统(尤尼斯) ...

  9. linux命令大全比较完整

    转:https://www.cnblogs.com/yjd_hycf_space/p/7730690.html 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是 ...

  10. visual studio code 输出乱码

    问题: 解决方法: 首先,这个与VS本身无关,问题是出现在windows的dos显示设置上. 如何解决这个问题? 1.打开运行,输入cmd: 2.界面顶部右键,选择默认值: 3.将437(OEM-美国 ...