首先,简单的介绍下什么是JEECG。JEECG(J2EECode Generation)是一款基于代码生成器的免费开源的快速开发平台,使用JEECG可以简单快速地开发出企业级的Web应用系统。JEECG提倡简单功能由代码生成器直接生成,复杂业务采用表单自定义,业务流程使用工作流来实现、扩展出任务接口,由开发者编写特殊业务逻辑。

下面我们重点讲解下JEECG3.5GA版本多数据源的使用。在使用多数据源之前我们有必要了解什么是多数据源?为什么我们需要使用多数据源呢?多数据源是指同一个系统中处理的数据来自不同的数据源。比如我们在用ETL做数据同步、清洗和整合的时候经常要配置源库、整合库、清洗库、目标库等,如此多的数据源,我们需要采用灵活的机制配置,保证数据源间的自由切换。JEECG3.5提供了多数据源的功能,JEECG多数据源的设计直接利用了Springjdbc连接,跟Hibernate、Mybatis等持久化框架无关,就跟我们采用最原始的JDBC连接一样,简单方便。JEECG数据库中t_s_data_source表用来存放动态的数据源,系统在启动时通过org.jeecgframework.web.system.listener.InitListener把t_s_data_source表中的所有动态数据源信息配置到静态的Map中,其中t_s_data_source.db_key字段作为Map的key,以t_s_data_source的实体类作为value。

下面简单介绍下如何在JEECG3.5GA中使用多数据源。

1.配置多数据源管理菜单并分配权限。

(1) 配置多数据源管理菜单。

找到DynamicDataSourceController数据源配置控制类,可以方便的看出数据源配置的url是dynamicDataSourceController.do?dbSource。

进入“系统管理”à“菜单管理”,单击“菜单录入”,录入菜单信息如下:

其中菜单地址为:dynamicDataSourceController.do?dbSource,单击“确定”按钮,保存菜单信息。

(2)为角色分配菜单权限。

进入“系统管理”à“角色管理”,单击“角色列表”下的【权限设置】,加载“菜单列表”,勾选“多数据源管理”前面的复选框,单击“菜单列表”旁边的保存图标进行保存角色菜单权限。

(3)退出系统重新登录。可以看到“系统管理”中增加“多数据源管理”菜单。

2、录入数据源信息。

(1)进入“系统管理”à“多数据源管理”,进入如下页面。


(2)单击“录入”,录入数据源信息,并保存。

说明:每次新增或者编辑数据源的时候,系统都会动态刷新缓存中的数据源信息。

1. 动态使用多数据源。

具体各个方法使用请查看org.jeecgframework.core.util.DynamicDBUtil工具类。重点关注下面三个方法:

public static List<Map<String, Object>> findList(final String dbKey, String sql, Object... param);

public static Object findOne(finalString dbKey, String sql, Object... param);

public static int update(finalString dbKey, String sql, Object... param);

创建Service实现类,同时在页面必须上传要调用数据源的dbKey.

/**

* 动态数据源测试

@param dbKey 数据源KEY

@return

*/

public List<Map<String,Object>> queryDynamicDB(String dbKey){

final String sql = "select * from tbl_sys_user";

List<Map<String,Object>> userList = DynamicDBUtil.findList(dbKey, sql, null);

return userList;

}

以上就是对JEECG3.5GA多数据源使用的简单分析,通过以上分析我们知道JEECG把数据源存放在数据库里,方便灵活的管理和维护数据源,同时采用SpringJdbc进行多数据源的处理,简单直接,同时效率较高。

浅谈JEECG多数据源的使用的更多相关文章

  1. 浅谈Android编码规范及命名规范

    前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 ...

  2. 浅谈RecyclerView(完美替代ListView,GridView)

    Android RecyclerView 是Android5.0推出来的,导入support-v7包即可使用. 个人体验来说,RecyclerView绝对是一款功能强大的控件. 首先总结下Recycl ...

  3. 安卓开发_浅谈ListView(SimpleAdapter数组适配器)

    安卓开发_浅谈ListView(ArrayAdapter数组适配器) 学习使用ListView组件和SimapleAdapter适配器实现一个带图标的ListView列表 总共3部分 一.MainAc ...

  4. 【架构】浅谈web网站架构演变过程

    浅谈web网站架构演变过程   前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变.   该系统具备的功能:   用户模块:用户注册和管理 商品模块:商品展示和管 ...

  5. Hibernate更新部分字段浅谈

    update语句是在Hibernate的Configuration的时候生成的,不能动态改变.为什么update的时候所有的属性都一起update,而不是只更新改变字段,其实这是一个比较值得探讨的问题 ...

  6. 浅谈Vue不同场景下组件间的数据交流

    浅谈Vue不同场景下组件间的数据“交流”   Vue的官方文档可以说是很详细了.在我看来,它和react等其他框架文档一样,讲述的方式的更多的是“方法论”,而不是“场景论”,这也就导致了:我们在阅读完 ...

  7. 安卓开发_浅谈ListView(自定义适配器)

    ListView作为一个实际开发中使用率非常高的视图,一般的系统自带的适配器都无法满足开发中的需求,这时候就需要开发人员来自定义适配器使得ListView能够有一个不错的显示效果 有这样一个Demo ...

  8. 浅谈分词算法(4)基于字的分词方法(CRF)

    目录 前言 目录 条件随机场(conditional random field CRF) 核心点 线性链条件随机场 简化形式 CRF分词 CRF VS HMM 代码实现 训练代码 实验结果 参考文献 ...

  9. 【Vue】浅谈Vue不同场景下组件间的数据交流

    浅谈Vue不同场景下组件间的数据“交流”   Vue的官方文档可以说是很详细了.在我看来,它和react等其他框架文档一样,讲述的方式的更多的是“方法论”,而不是“场景论”,这也就导致了:我们在阅读完 ...

随机推荐

  1. 动态规划法(六)鸡蛋掉落问题(一)(egg dropping problem)

      继续讲故事~~   这天,丁丁正走在路上,欣赏着路边迷人的城市风景,突然发现前面的大楼前围了一波吃瓜群众.他好奇地凑上前去,想一探究竟,看看到底发生了什么事情.   原来本市的一位小有名气的科学家 ...

  2. Linux中inotify软件部署及参数事件演示

    声明:博主使用的是CentOS6.9的系统 参考资料: https://github.com/rvoicilas/inotify-tools/wiki http://www.ibm.com/devel ...

  3. JS实现用特殊符号替换字符串的中间部分区域

    一.引入 相信很多人都遇到过敏感信息需要做部分隐藏功能,大多数都是用特殊符号去替换. 正好今天我又遇到这样的前端显示的需求,正好把相关JS记录下来,方便下次再用. 二.JS部分 /* 部分隐藏处理 * ...

  4. 【原】ActiveMq实现分布式事务一致性

    前言:关于分布式事务话题一直是颇有争议的话题,在本文中通过ActiveMq 实现分布式事务做一个简单的demo;同时也让自己能在实践中可以获取经验和对分布式事务自己的一些思考. 1.本地事务 我们通常 ...

  5. 多语言网站利器 rel="alternate" hreflang="x"

    下面是我在浏览网站时无意看到的,然后就搜了一下,感觉内容不错但我还没有测试,就转载过来做个备注,有时间了在翻过来看看 rel="alternate" hreflang=" ...

  6. docker 安装软件

    Docker Docker官方网址: https://docs.docker.com/  英文地址 Docker中文网址: http://www.docker.org.cn/ 中文地址 Docker是 ...

  7. Oracle 11g即时客户端在windows下的配置

    Oracle 11g即时客户端在windows下的配置 by:授客QQ:1033553122 instantclient-basic-nt-11.2.0.3.0.zip客户端压缩包为例 步骤 1. 假 ...

  8. mac下载的excel如果带有超链接,url被转义问题

    注释的代码是file开头的,这种链接在mac系统进行跳转url会转义 hyperlink 还有一种就是http这种就可以正常跳转了. String sLink = basePath + "/ ...

  9. JS笔记(一):基础知识

    (一) 标识符 标识符就是一个名字,在JS中,标识符用来对变量和函数命名,或者用做JS代码中某些循环语句中的跳转位置的标记.JS的标识符必须以字母._或$符号开始,后续字符可以是字母.数字._或$符号 ...

  10. LeetCode题解之 Subtree of Another Tree

    1.题目描述 2.问题分析 判断一个节点,然后判断子树. 3.代码 bool isSubtree(TreeNode* s, TreeNode* t) { if (s == NULL) return f ...