spring多数据源的处理 mybatis实现跨库查询

上传人:s****a 文档编号:169563340 上传时间:2022-11-16 格式:DOCX 页数:3 大小:11.20KB
收藏 版权申诉 举报 下载
spring多数据源的处理 mybatis实现跨库查询_第1页
第1页 / 共3页
spring多数据源的处理 mybatis实现跨库查询_第2页
第2页 / 共3页
spring多数据源的处理 mybatis实现跨库查询_第3页
第3页 / 共3页
资源描述:

《spring多数据源的处理 mybatis实现跨库查询》由会员分享,可在线阅读,更多相关《spring多数据源的处理 mybatis实现跨库查询(3页珍藏版)》请在装配图网上搜索。

1、实现Myibatis动态sql跨数据库的处理Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进 行管理,这样可以有效提高系统的水平伸缩性。而这样的方案就会不同于常见的单一数据实 例的方案,这就要程序在运行时根据当时的请求及系统状态来动态的决定将数据存储在哪个 数据库实例中,以及从哪个数据库提取数据。Spring配置多数据源的方式和具体使用过程。Spring对于多数据源,以数据库表为参照,大体上可以分成两大类情况:一是,表级上的跨数据库。即,对于不同的数据库却有相同的表(表名和表结构完全相 同)。二是,非表级上的跨数据库。即,多个数据源不存在相同的表。Sprin

2、g2.x的版本中采用Proxy模式,就是我们在方案中实现一个虚拟的数据源,并且 用它来封装数据源选择逻辑,这样就可以有效地将数据源选择逻辑从Client中分离出来。Clie nt提供选择所需的上下文(因为这是Clie nt所知道的),由虚拟的DataSource根据Clie nt 提供的上下文来实现数据源的选择。具体的实现就是,虚拟的 DataSource仅需继承AbstractRoutingDataSource实现 determ in eCurre ntLookupKey ()在其中封装数据源的选择逻辑。一、动态配置多数据源1.数据源的名称常量类:package m on. data;pub

3、lic class DataSourceC onst public static final String MANAGER = MANAGER;public static final String STMT = STMT;public static final String NODB = NODB;2.建立一个获得和设置上下文环境的类,主要负责改变上下文数据源的名称:public class DataSourceHa ndle private static final ThreadLocalcontextHolder = new ThreadLocal(); / 线程本地环境/设置数据源类型p

4、ublic static void setDataSourceType(Str ing dataSourceType) con textHolder.set(dataSourceType);/获取数据源类型public static Str ing getDataSourceType() retur n (Str ing) con textHolder.get();/清除数据源类型public static void clearDataSourceType() con textHolder.remove();3.建立动态数据源类,注意,这个类必须继承AbstractRoutingDataSou

5、rce,且实现方法 determineCurrentLookupKey,该方法返回一个Object, 般是返回字符串: package com.hope.datasource;public class Dyn amicDataSource exte nds AbstractRouti ngDataSource Overrideprotected Object determ in eCurre ntLookupKey() /在进行DAO操作前,通过上下文环境变量,获得数据源的类型retur n DataSourceHa ndle.getDataSourceType();4.编写spring的配置

6、文件配置多个数据源property n ame=password value=sabean id=NODBDataSource pare nt=pare ntDataSourcebea n id=ma nagerDataSource pare nt=pare ntDataSourceproperty n ame=urlvalue=jdbc:jtds:sqlserver:/localhost:1433/test1bean id=statDataSource parent=parentDataSourceproperty n ame=url value=jdbc:jtds:sqlserver:/l

7、ocalhost:1433/test2bean id=dataSource class=mon.data.DynamicDataSourcevmap key-type=java .Ian g.Stri ngventry value-ref=ma nagerDataSource key=MANAGERx/e ntryven try value-ref=statDataSource key=STMTx/e ntryventry value-ref=NODBDataSource key=NODBx/e ntryv/mapv/propertyvproperty n ame=defauItTargetD

8、ataSource ref=ma nagerDataSourcev/property v/bea n5. ibatis 相关 sqlvselectid=selectDBDictio naryresultMap=BaseResultMapparameterType=java .lang.ln teger select a.id,a.pare ntid,a.c name,a.priority,a.ifactive from hopetas_ma nager.dbo.dicti on arya inn er jo in zj.dbo.dicti on ary b on a.id=b.id where

9、 a.pare ntid= #id,jdbcType=INTEGERv/select 6.程序调用:在DAO操作前处理set setDataSourceType的值 /利用递归来处理字段public void getDict0(Eeme nt eleme nt, In teger id,l nteger j) /设置数据源DataSourceHa ndle.setDataSourceType(DataSourceC on st.NODB);ArrayList list = (ArrayList) this.dictMapper.selectDBDicti on ary(id);String s

10、tr = dir;j+;if (list.size() != 0 & list != null) for (Iterator iter = list.iterator(); iter.hasNext();) Dicti on ary dict = (Dicti on ary) iter .n ext();Element el = element.addElement(str+j);Element propl = el.addAttribute(id, dict.getId().toString();Eleme nt prop2 = el.addAttribute( name, dict.getC name().toStr in g();getDictO(el, dict.getld(),j);

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!