JEECG 多数据源设计
为什么要有多数据源?
通常一个系统只需要连接一个数据库就可以了,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 多数据源设计的更多相关文章
- 浅谈JEECG多数据源的使用
首先,简单的介绍下什么是JEECG.JEECG(J2EECode Generation)是一款基于代码生成器的免费开源的快速开发平台,使用JEECG可以简单快速地开发出企业级的Web应用系统.JEEC ...
- JEECG平台权限设计
JEECG平台权限设计 链接存放位置:https://github.com/PlayTaoist/jeecg-lession/tree/master/%E6%9D%83%E9%99%90%E7%AE% ...
- Spring 注解动态数据源设计实践
Spring 动态数据源 动态数据源是什么?解决了什么问题? 在实际的开发中,同一个项目中使用多个数据源是很常见的场景.比如,一个读写分离的项目存在主数据源与读数据源. 所谓动态数据源,就是通过Spr ...
- JEECG技术总结
1.用户数据迁移时,必须在表t_s_base_user和t_s_user中都插入数据才会在页面显示.2.执行sql语句: String sql = "select count(id) fro ...
- 通过枚举enum实现单例设计
一.枚举 通过enum关键字来实现枚举,在枚举中需要注意的有: 1. 枚举中的属性必须放在最前面,一般使用大写字母表示 2. 枚举中可以和java类一样定义方法 3. 枚举中的构造方法必须是私有的 通 ...
- 怎么做fastreport使用离线数据源
近期使用做项目发现fastreport使用在线数据源.紧密耦合的数据库连接字符串.在部署稍加注意.easy错误.因此,是否想到脱机使用的数据源. 官方参考: watermark/2/text/aHR0 ...
- 转 jeecg3.5中多数据源的配置
官方微信有介绍通过web界面配置的方法:浅谈jeecg多数据源的使用,没试过不知道能不能用. 如果要手工配置也是可以的 在spring-mvc-hibernate.xml这个配置文件中增加一个数据源, ...
- 【JEECG技术文档】Jeecg高级查询器
1. 背景 对于用户来讲查询功能按易用性分三个层次: 1)最简单查询操作是一个输入框,全文检索,如百度,后台实现技术使用搜索引擎,需要设计和建立索引,技术较为复杂,适用于文档和信息数据库检索,但是结果 ...
- Selenium测试规划
开源工具经过近几年的发展,已经出现了一大批成熟的可应用到实际项目中的产品,其中,在WEB自动化测试领域,Selenium支持广泛的浏览器和脚本开发语言,高效的执行效率,获得广泛的应用. 本课程结合Se ...
随机推荐
- lua string介绍
1. string库中所有的字符索引从前往后是1,2,...;从后往前是-1,-2,...2. string库中所有的function都不会直接操作字符串,而是返回一个结果 string.byte(s ...
- Apache Mahout 简介 通过可伸缩、商业友好的机器学习来构建智能应用程序
在信息时代,公司和个人的成功越来越依赖于迅速有效地将大量数据转化为可操作的信息.无论是每天处理数以千计的个人电子邮件消息,还是从海量博客文章中推测用户的意图,都需要使用一些工具来组织和增强数据. 这其 ...
- kafka生产者、消费者java示例
1. 生产者 import java.util.Properties; import kafka.javaapi.producer.Producer; import kafka.producer.Ke ...
- CSS:CSS+DIV布局网页
现代网页布局:CSS+DIV: 一般的网页都是顺序布局的,很难达到我们需要的网页布局格式,此时使用DIV进行分层布局,类似于盒子,对每一部分内容进行设计.这是现在主流的网页布局方式,使用DIV+CSS ...
- 通用 CSS 笔记、建议与指导
在参与规模庞大.历时漫长且人手众多的项目时,所有开发者遵守如下规则极为重要: + **保持 CSS 的可维护性** + **保持代码清晰易懂** + **保持代码的可拓展性** 为了实现这一目标,我们 ...
- Android批量图片加载经典系列——Volley框架实现多布局的新闻列表
一.问题描述 Volley是Google 2013年发布的实现Android平台上的网络通信库,主要提供网络通信和图片下载的解决方案,比如以前从网上下载图片的步骤可能是这样的流程: 在ListAdap ...
- 转:美团Android资源混淆保护实践
转自:http://tech.meituan.com/mt-android-resource-obfuscation.html 前言 Android应用中的APK安全性一直遭人诟病,市面上充斥着各种被 ...
- 更简单更全的material design状态栏
从实际使用须要出发,以最简单的方式实现了几种类型的MD状态栏. (重点在fitsSystemWindows的使用) 0,使用前提 Theme.AppCompat.Light.DarkActionBar ...
- x为正变数,求y=x^3/(x^4+4)的最大值
设z=1/y=x4+4/x3 显然,当z有最小值时,y有最大值,求得zmin,就得到了ymax 而z=x+4/x3=x/3+x/3+x/3+4/x3 根据正实数算术平均数大于等于它们的几何平均数的定理 ...
- 微信小程序 - 自定义模态对话框
更新日期:2018-11-5 微信bug: 在for循环中使用组件时,遮罩层成黑层. 更新时间 2018-9-30 2018-9-30 1.在电脑上调试input超出输入框范围会出现文字模糊以及位移现 ...