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. Thymeleaf学习记录(5)--运算及表单

    Thymeleaf文本及预算: 字面 文本文字:'one text','Another one!',... 号码文字:0,34,3.0,12.3,... 布尔文字:true,false 空字面: nu ...

  2. 【PyQt5 学习记录】003:水平布局和获取屏幕尺寸

    #!/usr/bin/python3 # -*- coding:utf-8 -*- import sys from PySide2.QtWidgets import (QApplication, QW ...

  3. 用SumatraPdf实现PDF静默打印

    原文:https://yutuo.net/archives/24a22d50d6001564.html 之前做一系统,有一个打印PDF文件的需求,需求如下: 能指定打印机 能两面打印 最好能静默打印 ...

  4. Android 图片旋转

    拍照后的照片有时被系统旋转,纠正步骤如下: 1.先读取图片文件被旋转的角度: /** * 通过ExifInterface类读取图片文件的被旋转角度 * @param path : 图片文件的路径 * ...

  5. The difference between a local variable and a member variable

    package com.itheima_04; /* * 成员变量和局部变量的区别: * A:在类中的位置不同 * 成员变量:类中,方法外 * 局部变量:方法中或者方法声明上(形式参数) * B:在内 ...

  6. Django Ajax的使用

    简介: AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX ...

  7. angular based app开发流程

    整理user story mock UI,生成满足上述user story的原型界面 根据上述UI,整理出data model(适用于后端和angular的数据模型) 后端CRUD开发,形成REST ...

  8. Java代码调用存储过程和存储方法

    准备一个oracle 的JDBC jar 包:ojdbc14_11g.jar 首先找到你的 oracle 安装位置,例如: 1.创建一个JDBC数据库连接工具类: package com.test.d ...

  9. DOM介绍

    什么是DOM DOM:文档对象模型.DOM 为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构.目的其实就是为了能让js操作html元素而制定的一个规范. DOM就是由节点组成的. 解析过程 ...

  10. SP2-0734: unknown command beginning "lsnrctl st..." - rest of line ignored.

    SP2-0734: unknown command beginning "lsnrctl st..." - rest of line ignored. Cause(原因):Comm ...