ActiveRecord初始化,可以实现jfinal系统启动完成后,再建立数据库连接
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系统启动完成后,再建立数据库连接的更多相关文章
- Flutter 初始化数据完成后再加载页面
一.初始化数据完成后再加载数据 1.为了达成这个目标尝试了多种方法总是失败 在Init 和didChangeDependencies 初始化数据过也不行 @override void didChang ...
- IOS中录音后再播放声音太小问题解决
1.AVAudioSessionCategory说明 1.1 AVAudioSessionCategoryAmbient 或 kAudioSessionCategory_AmbientSound 用于 ...
- MySQL服务正在启动或停止中,请稍候片刻后再试一次【解决方案】
相信有些小伙伴在使用数据库的过程中会经常频繁的启动和停止MySQL服务,有时候会出现“服务正在启动或停止中,请稍候片刻后再试一次.”这样的提示,如下图所示. 于是乎想办法去解决这个问题,但是发现连强制 ...
- 个人学习记录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, ...
- iOS 多个异步网络请求全部返回后再执行具体逻辑的方法
对于dispatch多个异步操作后的同步方法,以前只看过dispatch_group_async,看看这个方法的说明: * @discussion * Submits a block to a dis ...
- hibernate中保存一个对象后再设置此对象的属性为什么不需要调用update方法了
hibernate中保存一个对象后再设置此对象的属性为什么不需要调用update方法了 例如session.save(user);user.setAge(20); 原因: hibernate对象的三种 ...
- MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult
导出EXCEL方法总结 MVC导出数据到EXCEL的方法有很多种,常见的是: 1.采用EXCEL COM组件来动态生成XLS文件并保存到服务器上,然后转到该文件存放路径即可: 优点:可设置丰富的EXC ...
- JS的toFixed方法设置小数点位数后再进行计算,数据出错问题
这个应该算作失真,或者也不算.情况就是用了toFixed后再进行相关计算,得不到预期的结果 具体看例子 比如想动态计算百分比,保留一位小数如94.4%这样子 var blobTo = 409600; ...
- C# 多线程join的用法,等待多个子线程结束后再执行主线程
等待多个子线程结束后再执行主线程 class MultiThread{ #region join test public void MultiThreadTest() { Thread[] ths = ...
随机推荐
- ARP原理和欺骗
ARP--在TCP/IP协议栈中,最不安全的协议莫过于ARP了,我们经常听到的网络扫描,内网***,流量欺骗等等,他们基本上都与ARP有关系,甚至可以说,他们的底层都是基于ARP实现的.但是ARP的是 ...
- 使用jQuery的validation插件实现表单校验
前端表单校验: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- PowerDesigner16导出SQL时如何添加注释
添加注释方法 https://jingyan.baidu.com/article/47a29f24652e44c0142399c3.html 重点是修改value的值 alter table [%QU ...
- Mac(OS X)中Git安装与GitHub基本使用
GitHub是一个面向开源及私有软件项目的托管平台.开源代码库以及版本控制系统,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub.通常在Windows下使用GitHub的教程是非常 ...
- svg矢量图标在html中的使用, (知识点:1.通过h5中的css实现点击变色,2.一个svg文件包含多个图标)
svg矢量文件体积小,不变形,比传统的png先进,比现在流行的icon-font灵活.然而在使用过程中还是遇到了很多坑.今天花了一天时间把经验整理出来,以供后来者借鉴.如果您从本文收益,请留言mark ...
- laravel开发之-网站初建
1 cmd 打开电脑命令窗口 2 目录切换到网站根目录 3 输入命令:php artisan serve 4 model 生成命令:php artisan make:model 需要生成的model名 ...
- SSM 框架-05-详细整合教程(Eclipse版)(Spring+SpringMVC+MyBatis)
SSM 框架-05-详细整合教程(Eclipse版)(Spring+SpringMVC+MyBatis) 如果你使用的是 Intellij IDEA,请查看: SSM的配置流程详细的写了出来,方便很少 ...
- 结对编程——Java实现黄金分割点游戏
这是我和队员根据老师要求自创的一个人机黄金分割点游戏.这个小游戏在Windows10 下开发,用Eclipse做开发工具,实现语言是Java. 利用目前自己所学的Java知识实现了一人登录,电脑自行匹 ...
- sql server2008安装时提示重启计算机失败怎么办?
在键盘上按下组合键[Win]+[R],调出运行窗口. 在窗口中输入“regedit”,点击确定,打开注册表管理界面. 在注册表左侧目录栏中找到如下位置:“HKEY_LOCAL_MACHINE\SYST ...
- 如何解决MSSQL中文数据乱码问题
今天遇到了在数据库中直接写SQL语句,语句中包含中文,但是数据库的表里是包含“?” 的乱码. 我程序代码中,调试时得到的SQL不是乱码,在控制台中也不是乱码.但是在数据库中却出现了乱码. 当用MSSQ ...