浅谈JEECG多数据源的使用

首先,简单的介绍下什么是JEECG?JEECG(J2EE Code 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)    退出系统重新登录。可以看到“系统管理”中增加“多数据源管理”菜单。

  1. 录入数据源信息。

(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进行多数据源的处理,简单直接,同时效率较高。

时间: 2024-10-12 00:50:57

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

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

ListView作为一个实际开发中使用率非常高的视图,一般的系统自带的适配器都无法满足开发中的需求,这时候就需要开发人员来自定义适配器使得ListView能够有一个不错的显示效果 有这样一个Demo ,实现图片文字混合列表 1 package com.example.work; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 7 8 import android.R.in

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

浅谈Vue不同场景下组件间的数据“交流” Vue的官方文档可以说是很详细了.在我看来,它和react等其他框架文档一样,讲述的方式的更多的是“方法论”,而不是“场景论”,这也就导致了:我们在阅读完文档许多遍后,写起代码还是不免感到有许多困惑,因为我们不知道其中一些知识点的运用场景.这就是我写这篇文章的目的,探讨不同场景下组件间的数据“交流”的Vue实现 父子组件间的数据交流 父子组件间的数据交流可分为两种: 1.父组件传递数据给子组件 2.子组件传递数据给父组件 父组件传递数据给子组件——pro

io流浅谈

IO流浅谈 在这篇文章里,我会分别和大家聊字节流和字符流 一字节流 File     File:文件和目录(文件夹)路径名的抽象表示形式.       File的构造方法:    File(String pathname):把一个路径名称封装成File对象    File(String parent, String child):把一个父路径和一个子路径封装成一个File对象    File(File parent, String child):把一个父路径File对象和一个子路径封装成一个Fi

浅谈MVC

浅谈MVC What is MVC? MVC与模板概念的理解:MVC(Model View Controller)模型-视图-控制器 MVC本来是存在于Deskt op程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC 的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.比如一批统计数据你可以分别用柱状图.饼图来表示.C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新. 模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Small

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

浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理 阶段一.单机构建网站 网站的初期,我们经常会在单机上跑我们所有的程序和软件.此时我们使用一个容器,如tomcat.jetty.jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如maven+spring+struct+hibernate.maven+spri

浅谈DevExpress&lt;二&gt;:设计一个完整界面(1)

昨天谈了界面的换肤问题,今天拿一个简单的界面来介绍一下怎么设计一个五脏俱全的界面,总体效果如下图(种类的图片随便找的^^): 创建一个winform项目,在上面拉进去一个bar管理器和图片列表: 在菜单栏.工具栏和状态栏中,分别加入菜单.编辑栏.按钮和静态文本: 菜单栏改名并设置好图片: 然后改工具栏项的属性,拿第一个举个例子,后面的大同小异,选择EditItem后先将其PaintStyle属性改为CapationGlyph,然后找到Edit,选择CheckEdit,就会变成下面的样子: 依法炮

?浅谈Asp.net的sessionState

浅谈Asp.net的sessionState Three Session State providers : InProcSessionStateStore, which stores session state in memory in the ASP.NET worker process OutOfProcSessionStateStore, which stores session state in memory in an external state server process Sq

浅谈“回调”在程序设计中的好处

1:回调还是返回(return) 在写代码的时候,我们经常碰到这样的场景:调用一个函数或者方法时需要返回多个值给上级调用者,如示例: void methodA(){    Wrap w = methodB();     w.one; //use    w.two; } Wrap methodB(){     do something;     return Wrap; } class Wrap{    Type one;    Type two; } 上面是我刚开始写代码时候常用的方式,在多个类

Hibernate更新部分字段浅谈

update语句是在Hibernate的Configuration的时候生成的,不能动态改变.为什么update的时候所有的属性都一起update,而不是只更新改变字段,其实这是一个比较值得探讨的问题. 如果想要做到只更新改变了的字段,必须做到两点:1.对PO的每个属性设置version进行状态跟踪2.update语句是动态生成的,在实际向数据库更新的时候,依次检查每个属性的version,决定哪些属性需要更新,动态构造update语句. 单单要做到上述第一点,就势必要给PO的操作带来沉重的负担