如何根据不同的用户使用不同的jdbcTemplate数据源?

公司有一项目,使用的是spring JDBCTemplate 作为数据库连接池,现在需求变更了,需要根据不同的用户访问不同的数据源。
根据用户找出数据库名很容易办到,现在的问题是如何如何在不同的request里面使用不同的数据源?或者说 jdbctemplate 如何做到多数据源?
谢谢大家了。

0

2个回答

org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource这个类就是解决这种问题的。
具体说,实现 protected Object determineCurrentLookupKey()这个方法返回一个key,protected DataSource determineTargetDataSource()这个方法根据你的key找出数据源。
一般是用ThreadLocal保存一个标志,再用这个类,根据标志找出TargetDataSource。对于web应用,一般用filter,请求开始时放入标志,在请求结束后清除标志。

0
iteye_2131
iteye_2131 不错 是这样的
接近 6 年之前 回复

嗯嗯 ,学习到了,明白了!!!!!!

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
多数据源使用,配置Spring 管理JdbcTemplate
n<?xml version="1.0" encoding="UTF-8"?>rn<beans xmlns="http://www.springframework.org/schema/beans"rn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"rn xmlns:jee="http://www.springfram
要实现读写分离需要根据用户的操作连接不同的数据库
连接不同的数据库就需要动态切换数据源动态切换数据源的实现方案:结合AOP实现。一、建立一个获得和设置上下文环境的类,主要负责改变上下文数据源的名称public class DynamicDataSourceHolder {private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();public
Spring结合hibernate和jdbcTemplate多数据源事物问题
首先说明我的环境Spring3.2.8+hibernate3.6.10.Final+tomcat7n 在写这篇博客前在网上查询了相关资料 ,网上给出的结论是:如果有多个相同的数据源,开启了多个事物,使用spring的声明式事物(AOP配置:1、xml配置 2、注解Transaction 两者都是。关于编程式事物就自行百度)管理事物,一旦发生RunTimeException异常,那么多个事物都会回滚
spring mvc 多数据源配置 根据package配置不同的数据源
我的博客原文地址 http://www.yujunyi.com/java/spring-mvc/353.html n 欢迎访问nnn背景nn有时候项目中可以需要连接两个数据库。因此就需要用到多数据源配置。nn原理就是配置两个dataSource,两个entityManagerFactory分别使用不同的dataSource,并设置不同的package扫描路径。nnnnnn配置文件nnnna...
SpringBoot使用JdbcTemplate的双数据源配置
数据源配置:nspring.datasource.primary.driver-class-name=com.mysql.jdbc.Drivernspring.datasource.primary.url=jdbc:mysql://read:3306/sevend?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDate
Spring Boot多数据源(JdbcTemplate)配置与使用
https://blog.csdn.net/u012081441/article/details/80746538
【Spring Boot】整合Mybatis实现不同Mapper映射不同数据源
【问题背景】rn在前两周写过一篇博客,关于项目中商品同步的优化方案记录,最后一个环节,需要将商品同步给商城,让php商城提供了一个批量同步商品的接口,但遇到的问题是每次调用接口,处理的商品到2万条就会出错,很奇怪,两种语言,但用的测试环境mysql是一个,我们可以处理十万条商品数据,他们却处理不了。rn【处理方案】rnphp处理不了十万商品数据,也不能影响整个系统运行,所以只能是我这边做处理,在商品服务...
java spring手写jdbcTemplate,实现查询多数据源数据。
最近项目中的工作流需要查询多个数据源的数据,数据源可能是不同种类的:如sql server,oracl等等,一开始是用的配置实现,后来发现在项目运行中,可能需要动态的添加更多不同类型的数据源,所以最终的逻辑是将数据源配置在数据库中。
SpringMVC JdbcTemplate 多数据源配置实现
如果有业务需求,单个工程需要连接多个数据库,那么就要配置多数据源,不同数据需求请求不同数据源,如下是双数据源具体实现步骤:nn1. 配置文件中配置两个数据库的连接信息nnjdbc.properties:nndb1.jdbc.driver=com.mysql.jdbc.Driverndb1.jdbc.url=jdbc:mysql://192.168.0.100:3306/db1?useUnicode...
SpringBoot根据规则切换数据源
n n n 光读写分离还不够,我要根据业务使用场景来选择数据库,比如按照省来分...
使用spring 实现真正多数据源的动态加载及动态切换
1 前言:rn 公司需要做一个分析统计系统,该系统需要连接N台服务器结点,进行数据的统计分析操作,rn项目是以spring为基础框架搭建的.收集现在网上的所有关于多数据源配置的方式,并没有自己十分满意的,例如我有N个数据源,按照现网可以搜索到的配置方式,都是在spring配置文件中配置N个datasource,并通过实现AbstractRoutingDataSource抽象类的子类进行多数据源的...
SPRING-JDBC多个数据源
rnrnSPRINGJDBC:rn rn1、rnrnrnrnrnrn rn2、rn@Servicern@Lazy(true)rnpublic classSpringJdbcDbRunner extends AbstractDbRunner {rn rn@AutowiredrnprivateJdbcTemplate jdbcTemplate;rn rn@Overridernpubliclong
SpringBoot+Mybatis不同包下应用不同数据源(多数据源热切换)
pom包就不写出来了,因为都是同样的镜像文件。nn首先配置两个数据源:nnnfirst.datasource.driverClassName = com.mysql.jdbc.Drivernfirst.datasource.url = jdbc:mysql://localhost:3306/test2?useUnicode=true&amp;amp;characterEncoding=utf-8nfirs...
springcloud:不同模块可配置不同数据源
只要更改每个模块的application.yml,如:nnclient模块配置oracle数据源:nnneureka:n client:n serviceUrl:n defaultZone: http://localhost:8011/eureka/nserver:n port: 8017nspring:n application:n name: bjzd-basen ...
Spring多数据源的配置和使用(2)
 rn 本文以Spring2.5 + Hibernate3 + Mysql5 + Oracle10g 为例配置和使用多数据源。rn rn 1. 配置多个数据源rn 这里以两个c3p0数据库连接池的数据源作为实例。在Spring框架下使用c3p0的数据库需要加入c3p0-0.9.1.2.jar (现在最新的)这个支持包。这里以数据同步项目为例:rn 数据来源库的连接池数据...
C# 动态修改DataGridView数据源,根据不同条件显示不同数据(代码)
在实际应用中,需要动态根据程序执行中的数据显示不同数据表中的数据,两个表中的数据列有一些并不相同,因此不能使用相同的数据列显示。如何动态修改数据源并显示如来?经过测试,可以在每次绑定之前先清空所有数据列,然后根据数据源的信息让程序自动再生成数据列。 private void bindDGVContractDetail(int cId)n {n uc...
Spring boot JdbcTemplate使用多数据源配置
注:使用上篇的Mac Spring boot(1.5.9) 使用JDBCTemplate操作数据库,现在我们使用两个数据库,都有个user表,对user表进行相关数据库操作1、看下项目目录 n2、我们配置下application.properties,连接的两个数据库new_schema和new_testspring.datasource.primary.url =jdbc:mysql://loca
CAS之5.2x版本自定义登录,多数据源登录-yellowcong
通过自定义登录的策略,可以根据传递过来的参数,来确定使用那个数据库查询用户信息。这种方式,可以说是,爽歪歪啊。可以自己登录,设定数据源来访问。我后期加jdbctemplate的配置,将jdbc集成springboot里面,这样用的是springboot里面数据源。n学习要求需要对于cas和springboot环境搭建有所了解,不然看着,都不知道我说得啥玩意。项目地址https://gitee.com
spring profile选择不同数据源
spring profile提供了一种方法,用于解决项目在不同环境中自动选择不同的配置。nnnpackage com.spring.di;nnimport org.springframework.context.annotation.Bean;nimport org.springframework.context.annotation.Configuration;nimport org.sprin...
EF 基于代码切换到不同数据库的方法
最近写项目一直在用EF , 跨库能力极强. 很喜欢. nn但是不能动态切换数据库, 最近搞了一个配置中心的功能, 把连接字符串放到配置中心中单独配置管理. n但是EF默认是放到Web.config中的. 就算自己拼装出了连接字符串也会因为没有 providerName=”System.Data.SqlClient” 而失败. n经过再三研究, 今天研究了一下午终于搞定了.nn关键是...
mybatis单数据源和多数据源不同配置方式
百度一下!到处都是mybatis跟spring结合的配置,可是我不想用spring来写测试代码!!!! n废话不多说,贴配置跟代码,以及测试方法。记录一下,也方便他人,欢迎交流。nnn dao类和mapper.xml都跟mybatis平常使用的一样,都可以自动生成nnn单数据源nn配置文件nn放置在resources目录下nn&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UT...
Spring Boot动态数据源切换实现
Spring Boot实现动态数据源切换可以先参看下http://blog.csdn.net/zero__007/article/details/48711017,了解大致下实现的原理。n       首先我们使用db_dao.xml来配置各个datasource:nn&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;n
springboot项目实现多数据源切换
在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性。而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时的请求及系统状态来动态的决定将数据存储在哪个数据库实例中,以及从哪个数据库提取数据,下面是具体的实现方案1.   必要配置1.1       依赖包引入pom文件中引入相关支持&amp;lt;!-- 与数据库操作相关的依赖 --&amp;gt;n&amp;...
mybatis+spring实现动态切换数据源 maven项目
mybatis+spring实现动态切换数据源,修改数据源配置信息之后,直接运行test可进行测试 maven项目 导入即可 jar包都不用 适合学习参考 出自Java自学网 (Java自学网专供 就是免积分下载)
利用反射泛型编写通用的增删查改Dao父类
nimport ming.stop.utils.JDBCUtils;nimport org.apache.commons.dbutils.QueryRunner;nimport org.apache.commons.dbutils.handlers.BeanHandler;nimport org.apache.commons.dbutils.handlers.BeanListHandler;nni...
springboot多数据源指定不同事务管理器
springboot多数据源指定不同事务管理器
spring项目动态连接不同的数据库的一种实现方案
在项目的管理中,有时候会出现项目合并的情况,但别的项目使用的是另一个数据库,做数据合并的时候同名表可能会有冲突的情况,这个时候可以使用同一项目使用不同数据库的方案,具体的操作流程可如下:rn首先是数据源的配置,以oracle为例:rndbutil.dbType=oraclernjdbc.driverName=oracle.jdbc.driver.OracleDriverrnjdbc.url=XXX
【SpringBoot】动态调用双数据源(使用参数实现,解决同名Bean问题)
目前进行公司的一个BOSS项目的开发工作,由于单台Oracle数据库无法满足项目庞大的数据量,数据库开发不想进行去O,也就无法使用MySQL集群解决数据量陡增的问题。数据库开发提出了一个分库的方案,将整个Oracle按数据量分为两个库,同时在一个库的时候各个省份的表也是分离的,如果使用扫描就导致了在Java代码(SpringBoot + Mybatis)里存在同名的Bean,通过目录区分,这样Ma...
Spring通过URL来动态切换多数据源
1.多数据连接信息application.properties#dataBase1njdbc1.driver=org.mariadb.jdbc.Drivernjdbc1.url=jdbc:mariadb://localhost:3306/remotetestnjdbc1.username=rootnjdbc1.password=rootnjdbc1.pool.maxIdle=10njdbc1.po...
springboot配置多数据源(不同DB)
springBoot集成Mysql+MongoDBrn因为在项目中需要用到两个不同的数据源。但是又不存在于一个DB中。让我很是苦恼,不得已只能集成多数据源。rn博主文笔不好,只能讲干货了。。rn目标:rn使用springBoot集成mysql于MongoDB,即一个项目操作多数据源(不同DB)。rn步骤一: pom依赖的导入,这一步大家就很熟悉了~rn n n mysqln mysql
Spring的jdbcTemplate完成登录用户登录功能
超详细的spring的jdbcTemplate模板整使用过程
配置多数据源及多个的jdbcTemple
java配置多个数据源时,存在多个jdbcTemple不实例化的问题的处理。
spring mvc(mybatis)配置多个不同数据库
1、首先要有两个mybatis-confi.xml,一个为mysql,一个为sqlserver。nMYSQLnnn interceptor="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor">n name="dialectClass" value="com.github.miemiedev.myb
阿里druid数据源及JdbcTemplate配置使用
接近年底了在外地出差格外想家呀,尤其这种到处都洋溢着节日喜庆的时节。忙里偷闲把之前有关数据源的疑惑整理了下。分别是数据源和对数据库的操作。阿里巴巴的数据源druid作为后起之秀,各种优点百科都有,这里就不赘述了。今天主要说下相关配置。druid配置及使用添加相关jar包(我是maven项目,因此在pom.xml中添加如下依赖):<!-- druid数据源 -->n <dependency>
关于Maven使用不同环境进行配置的问题
应用情景:在web开发过程有一种需求是迫切存在的,通常一个项目并不是一次性开发完成的,有些通用的参数为了测试可能会该来该去,比如说连接的数据源,想一想是不是在开发一个项目之前当需要数据的时候,如果没有太大的把握通常是不敢动线上数据库的,特别是操作数据库中的数据,因为稍有不当就会影响线上的其他服务。更常见的做法是在自己本地搭建一个数据库,然后随便整点数据进去,然后随便怎么搞都不用担心,那么问题来了当我
使用localstorage来设置不同用户对应的头像
login.vue:nnnn nnhome.vue:nn返回的数据结构:nnnnjs:localStorage.setItem(&quot;clientLogo&quot;,JSON.stringify(data.client.clientLogo));nn 
润乾报表分析模块如何实现根据参数值不同,查询不同的表数据进行分析
解决方法:n使用 dfx 和 dfx 参数实现思路如下:nn写 dfx 脚本,脚本中根据参数不同计算不同的 sql 返回结果nURL 拼参数值传递给分析页面,然后通过 dfxParams 标签接受 dfx 参数,传递给 dfx 做计算nn分析页面会显示对应计算后的字段,供用户进行自定义分析使用nn简单示例:n1.dfx 脚本中定义参数,然后根据参数不同查询不同数据表并返回结果集:n2.analys...
数据库存储过程(调用不同数据库或不同用户下的存储过程)
今天在开发过程中遇到两个问题:n1.如何调用别人数据库的存储过程?n2.如何调用自己数据库不同用户下的存储过程?n经过网上搜索资料和自己的不断测试,终于成功了,现记录下来,以便资源共享。nn首先,如果是调用别人的数据库的存储过程,首先你得先跟别人的数据库建立一个DBLINK(如何创建,在此不进行描述),其次,别人数据库的存储过程要给你的用户赋予一定的权限。比如,我测试时候的数据,nup
多数据源配置 情况 下的事务管理
可以是分布式事务管理n也可以是简单的datasourceTranctionManager.nn但是我们建议不做分布式事务管理,尽量保证一个事务下只操作一个数据库,n 保持服务的功能单一性,如果一个服务会操作到两个数据库中的数据,那涉及到的所有表最好放到同一个数据库中。n 因为分布式事务管理,消耗资源严重,性能下降。nnn如果不是分布式事务管理,又有多个数据源,n我们就要配置多个事务管理器了,哈哈,
基于spring boot根据来自不同域名的请求动态切源
n n n 由于公司有多个子公司,每个子公司都部署同一套OA系统,各自数据库数据不一样,访问域名也不一样,但是代码却一样的。基于这样一个场景下,公司需要把各个子公司的OA系统部署在一起,通过切源方式来访问不同的数据库,从而节省服务器成本n我查了网上许多关于动态切源相关解决方案,但是没有找到适合自己的切源方法,于是基于网上一些切源的方案经过自己改造从而达到自己的目的n1...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链交易所价格不同 大数据学习数据源