转至元数据起始

 

为什么要有多数据源?

通常一个系统只需要连接一个数据库就可以了,Jeecg数据源是配置在spring-mvc-hibernate.xml文件中,这种数据源我们叫做主数据源。但是在企业应用的开发中往往会和其他子系统交互,特别是对于一些数据实时性要求比较高的数据,我们就需要做实时连接查询,而不是做同步。这个时候就需要用到多数据源。 举个简单的例子某企业要做订单网上订单系统这里面就可以涉及到多个子系统的连接,比如:产品主数据的数据源,项目管理系统的数据源(项目可以产品订单)等多个不同数据库类似的数据源,他们可能是ORACLE,SQL SERVER,MYSQL等多种混合数据源。

Jeecg多数据源的设计原理

多数据源的设计有多种方案,网上有很多是设计在spring-mvc-hibernate.xml文件中,通过在不同线程中datasource动态切换来实现,这样使得配置,程序太过复杂,所以Jeecg并没有使用这种方法。 Jeecg多数据源设计很简单就是直接利用 springjdbc连接,跟Hibernate或者MyBatis等持久化框架无关。就是我们最原始的类似JDBC的连接原理一样,只不过我们这里使用了springjdbc更加成熟的连接方法。 我们把多数据源的配置信息单独放在t_s_data_source表里维护管理。

Jeecg多数据的实现方法:

创建t_s_data_source表,结构如下,并把该表的内容在TOMCAT启动时添加到缓存(缓存机制查看类:InitListener),以t_s_data_source.key字段为key值,以t_s_data_source的实体类为value放到static Map中

id

db_key

description

driver_class

url

db_user

db_password

db_type

SAP_DB

sap db

oracle.jdbc.driver.OracleDriver

jdbc:oracle:thin:@10.10.0.59:1521:mid

CRM

CRM2013

oracle

       

新建动态数据的操作类:org.jeecgframework.core.util.DynamicDBUtil.java,该类集中放置了对数据库的连接,SQL查询,更新,删除,添加等操作常用方法。

  • 系统管理-多数据源管理菜单可以实际对t_s_data_source表的维护
  • 在Service层即可以调用DynamicDBUtil中的方法得到数据库连接并可以执行SQL
  • 举例:
  • 插入修改数据:DynamicDBUtil.update('SAP_DB','delete from user ??');    返回:int
  • 查询单条数据:   DynamicDBUtil .findOne('SAP_DB','delete from user ??');  返回:Map<String, Object>
  • 查询数据列表:DynamicDBUtil.findList('SAP_DB','delete from user ??');   返回:List<Map<String, Object>>

JEECG 多数据源设计的更多相关文章

  1. 浅谈JEECG多数据源的使用

    首先,简单的介绍下什么是JEECG.JEECG(J2EECode Generation)是一款基于代码生成器的免费开源的快速开发平台,使用JEECG可以简单快速地开发出企业级的Web应用系统.JEEC ...

  2. JEECG平台权限设计

    JEECG平台权限设计 链接存放位置:https://github.com/PlayTaoist/jeecg-lession/tree/master/%E6%9D%83%E9%99%90%E7%AE% ...

  3. Spring 注解动态数据源设计实践

    Spring 动态数据源 动态数据源是什么?解决了什么问题? 在实际的开发中,同一个项目中使用多个数据源是很常见的场景.比如,一个读写分离的项目存在主数据源与读数据源. 所谓动态数据源,就是通过Spr ...

  4. JEECG技术总结

    1.用户数据迁移时,必须在表t_s_base_user和t_s_user中都插入数据才会在页面显示.2.执行sql语句: String sql = "select count(id) fro ...

  5. 通过枚举enum实现单例设计

    一.枚举 通过enum关键字来实现枚举,在枚举中需要注意的有: 1. 枚举中的属性必须放在最前面,一般使用大写字母表示 2. 枚举中可以和java类一样定义方法 3. 枚举中的构造方法必须是私有的 通 ...

  6. 怎么做fastreport使用离线数据源

    近期使用做项目发现fastreport使用在线数据源.紧密耦合的数据库连接字符串.在部署稍加注意.easy错误.因此,是否想到脱机使用的数据源. 官方参考: watermark/2/text/aHR0 ...

  7. 转 jeecg3.5中多数据源的配置

    官方微信有介绍通过web界面配置的方法:浅谈jeecg多数据源的使用,没试过不知道能不能用. 如果要手工配置也是可以的 在spring-mvc-hibernate.xml这个配置文件中增加一个数据源, ...

  8. 【JEECG技术文档】Jeecg高级查询器

    1. 背景 对于用户来讲查询功能按易用性分三个层次: 1)最简单查询操作是一个输入框,全文检索,如百度,后台实现技术使用搜索引擎,需要设计和建立索引,技术较为复杂,适用于文档和信息数据库检索,但是结果 ...

  9. Selenium测试规划

    开源工具经过近几年的发展,已经出现了一大批成熟的可应用到实际项目中的产品,其中,在WEB自动化测试领域,Selenium支持广泛的浏览器和脚本开发语言,高效的执行效率,获得广泛的应用. 本课程结合Se ...

随机推荐

  1. Spark调研笔记第4篇 - PySpark Internals

    事实上.有两个名为PySpark的概念.一个是指Sparkclient内置的pyspark脚本.而还有一个是指Spark Python API中的名为pyspark的package. 本文仅仅对第1个 ...

  2. 一张图彻底了解Unity脚本的生命周期

    以前没好好看Unity的脚本手册,原来写的是这么的全...尤其起yield  www  协同 这部分看了这张图彻底的懂了..

  3. 定制NSLog便于打印调试

    定制NSLog便于打印调试 本人之前从事过嵌入式开发,对于打印调试比较在行,现分享定制的NSLog以及教大家如何使用. 源码下载地址  https://github.com/YouXianMing/Y ...

  4. Facebook产品的开发流程

    [编者注]王淮是Facebook第二位中国籍工程师,也是第一位中国籍研发经理,他一手开创了Facebook的支付安全和客服工具领域.2011年他离开Facebook,回国成为天使投资人,希望用自己在F ...

  5. MFC中显示图像的放大、缩小、移动功能

    StretchBlt函数直接对图片进行放大,缩小,显示位置变换. 这个函数有两种形态一种全局函数是这样的:  BOOL StretchBlt(HDC hdcDest, int nXOriginDest ...

  6. ScaleIO 1.2 基础

    The ScaleIO virtual SAN consists of 3 software components =================== Meta Data Manager (MDM ...

  7. 使用jQuery通过点击它删除HTML表格行-超简单

    jQuery的已成为所有时刻的最常用和最喜爱的JavaScript框架之一.它不仅不会减少在JavaScript编码简单的技术开销,而且也使您的代码的跨浏览器兼容.我已经写了许多关于jQuery教程, ...

  8. CSS 中的强制换行和禁止换行

    强制换行       1.word-break: break-all;       只对英文起作用,以字母作为换行依据.       2.word-wrap: break-word;   只对英文起作 ...

  9. 论#include

    1.#include " "与#include <> #include " "表示预编译命令源程序在当前项目下寻找头文件,如果找不到,再到标准头文件 ...

  10. Atlassian官方合作伙伴

    Atlassian官方合作伙伴 http://atlassian.csdn.net/m/btc/atlassian/index