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. C++11:实用特性

    今天逛cplusplus.com发现C++还真多了不少方便使用的特性,先了解些最常用的 初始化列表 vector<,,,}); vector<pair<int, int> &g ...

  2. mySql连接报错

    问题: mySql链接报错如下: 解决: 设定时区 在链接URL增加?serverTimezone=UTC,变为jdbc:mysql://localhost:3306/TEST?serverTimez ...

  3. Github+hexo+next搭建教程

    今天参考的是大神的教程,学了一个新东西,但是可能由于原教程中运用的npm包与我当前使用的npm包版本不同的原因,有出过多处运行错误,但都在此教程中解决了; 总结了下命令: npm install he ...

  4. Maven-pom-configuration

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  5. Android 黑色样式menu

    效果图:

  6. Bootstrap 在线引用

    Bootstrap 3.3.0 js 文件 <script src="http://cdn.bootcss.com/bootstrap/3.3.0/js/bootstrap.min.j ...

  7. Android内存管理-OnTrimMemory

    Application中有两个与内存管理相关的方法:onLowMemory()和 onTrimMemory(int level),源码如下 @CallSuper public void onLowMe ...

  8. Unihan(统汉字)常用字段介绍

    0 背景 1 文件 1.1 IRG Sources 1.2 Dictionary Indices 1.3 Dictionary-like Data 1.4 Other Mappings 1.5 Rad ...

  9. google学习

    https://developers.google.com/machine-learning/crash-course/ https://developers.google.com/machine-l ...

  10. 7.bootstrap HTML编码规范

    Bootstrap HTML编码规范 语法 用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致展现的方法. 嵌套元素应当缩进一次(即两个空格). 对于属性的定义,确保全部使用双 ...