System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种动态切换数据源的方法、装置、电子设备及介质制造方法及图纸_技高网

一种动态切换数据源的方法、装置、电子设备及介质制造方法及图纸

技术编号:40965052 阅读:2 留言:0更新日期:2024-04-18 20:44
本发明专利技术涉及一种动态切换数据源的方法、装置、电子设备及介质,其方法包括:解析数据源配置文件,得到对应的数据库连接池;将数据库连接池放入线程上下文中;接收前端携带的数据库唯一标识,根据数据库唯一标识在数据库连接池中确认数据库源信息;将数据库源信息作为参数传递给Mapper层进行占位符替换,得到占位符替换后的参数;基于占位符替换后的参数查询对应的数据库和对应的数据库下的数据表。本发明专利技术通过配置数据库连接池,并将数据库源信息作为参数传递,从而实现数据源的动态切换。

【技术实现步骤摘要】

本专利技术涉及数据库处理,尤其涉及一种动态切换数据源的方法、装置、电子设备及介质


技术介绍

1、通常一个后端服务只需要连接一个数据库就可以了,但是对于一些特殊场景需要同时连接多个数据库,且这些数据库在不同服务器下,如果后端服务想在多个数据库中灵活切换数据库,这个时候就需要动态切换多数据源的方法。

2、通常的方法是使用jdbctemplate层同时连接多个数据库,并配置多套dao层实例,但是这种方法非常不便,且在代码编译阶段需要确定具体操作哪个数据源,这种方式也叫静态切换,冗余且不灵活。


技术实现思路

1、有鉴于此,有必要提供一种动态切换数据源的方法,用以实现数据源的动态切换目的。

2、为了实现上述目的,本专利技术提供一种动态切换数据源的方法,包括:

3、解析数据源配置文件,得到对应的数据库连接池;

4、将所述数据库连接池放入线程上下文中;

5、接收前端携带的数据库唯一标识,根据所述数据库唯一标识在所述数据库连接池中确认数据库源信息;

6、将所述数据库源信息作为参数传递给mapper层进行占位符替换,得到占位符替换后的参数;

7、基于所述占位符替换后的参数查询对应的数据库和所述对应的数据库下的数据表。

8、在一些可能的实现方式中,所述解析数据源配置文件,得到对应的数据库连接池,包括:

9、获取数据源配置文件中所有数据库的连接信息,所述数据源配置文件配置有所有数据库对应的数据库连接池;

10、将所述所有数据库的连接信息放入map对象中,所述map对象中key为数据库名称,value为数据库连接;

11、从所述数据源配置文件获取所述所有数据库对应的数据库连接池。

12、在一些可能的实现方式中,所述线程上下文中基于java中的threadlocal类得到。

13、在一些可能的实现方式中,所述接收前端携带的数据库唯一标识,根据所述数据库唯一标识在所述数据库连接池中确认数据库源信息,包括:

14、定义一套根据数据库唯一标识查找数据源的第一注解;

15、在控制层基于所述第一注解接收前端携带的数据库唯一标识;

16、根据所述数据库唯一标识在所述数据库连接池中确认数据库源信息。

17、在一些可能的实现方式中,所述在控制层所述第一注解接收前端携带的数据库唯一标识,包括:

18、所述第一注解基于spel表达式从控制层请求的参数中提取得到所述数据库唯一标识。

19、在一些可能的实现方式中,还包括:

20、在切面层定义第二注解,所述第二注解包括默认值属性,所述默认值属性为键值对;

21、如果当前线程没有指定数据源,则解析所述默认值属性得到默认数据库源,并将所述默认数据库源放入所述线程上下文中。

22、在一些可能的实现方式中,所述方法基于spirngboot+mybatis搭建的框架。

23、另一方面,本专利技术还提供了一种动态切换数据源的装置,包括:

24、数据库连接池获取模块,用于解析数据源配置文件,得到对应的数据库连接池;

25、线程管理模块,用于将所述数据库连接池放入线程上下文中;

26、数据源获取模块,用于接收前端携带的数据库唯一标识,根据所述数据库唯一标识在所述数据库连接池中确认数据库源信息;

27、参数获取模块,用于将所述数据库源信息作为参数传递给mapper层进行占位符替换,得到占位符替换后的参数;

28、查询数据库模块,用于基于所述占位符替换后的参数查询对应的数据库和所述对应的数据库下的数据表。

29、另一方面,本专利技术还提供了一种电子设备,包括存储器和处理器,其中,

30、所述存储器,用于存储程序;

31、所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以实现上述任意一种实现方式中所述的一种动态切换数据源的方法中的步骤。

32、另一方面,本专利技术还提供了一种计算机可读存储介质,用于存储计算机可读取的程序或指令,所述程序或指令被处理器执行时能够实现上述任意一种实现方式中所述的一种动态切换数据源的方法中的步骤。

33、采用上述实施例的有益效果是:本专利技术提供的一种动态切换数据源的方法,首先解析数据源配置文件,形成对应的数据库连接池,然后将数据库连接池放入线程上下文中,进一步接收前端传递的数据库唯一标识,在数据库连接池中确认数据库源信息,最后将数据库源信息作为参数传递给mapper层进行占位符替换,得到占位符替换后的参数,根据占位符替换后的参数查询对应的数据库和对应的数据库下的数据表。本专利技术通过配置数据库连接池,数据库源信息作为参数传递,从而实现数据源的动态切换。

本文档来自技高网...

【技术保护点】

1.一种动态切换数据源的方法,其特征在于,包括:

2.根据权利要求1所述的动态切换数据源的方法,其特征在于,所述解析数据源配置文件,得到对应的数据库连接池,包括:获取数据源配置文件中所有数据库的连接信息,所述数据源配置文件配置有所有数据库对应的数据库连接池;

3.根据权利要求1所述的动态切换数据源的方法,其特征在于,所述线程上下文是基于java中的ThreadLocal类得到。

4.根据权利要求1所述的动态切换数据源的方法,其特征在于,所述根据所述数据库唯一标识在所述数据库连接池中确认数据库源信息,包括:

5.根据权利要求4所述的动态切换数据源的方法,其特征在于,所述在控制层所述第一注解接收前端携带的数据库唯一标识,包括:

6.根据权利要求1所述的动态切换数据源的方法,其特征在于,还包括:

7.根据权利要求1所述的动态切换数据源的方法,其特征在于,所述方法基于SpirngBoot和MyBatis搭建的框架。

8.一种动态切换数据源的装置,其特征在于,包括:

9.一种电子设备,其特征在于,包括存储器和处理器,其中,

10.一种计算机可读存储介质,其特征在于,用于存储计算机可读取的程序或指令,所述程序或指令被处理器执行时能够实现上述权利要求1至7中任意一项所述的一种动态切换数据源的方法中的步骤。

...

【技术特征摘要】

1.一种动态切换数据源的方法,其特征在于,包括:

2.根据权利要求1所述的动态切换数据源的方法,其特征在于,所述解析数据源配置文件,得到对应的数据库连接池,包括:获取数据源配置文件中所有数据库的连接信息,所述数据源配置文件配置有所有数据库对应的数据库连接池;

3.根据权利要求1所述的动态切换数据源的方法,其特征在于,所述线程上下文是基于java中的threadlocal类得到。

4.根据权利要求1所述的动态切换数据源的方法,其特征在于,所述根据所述数据库唯一标识在所述数据库连接池中确认数据库源信息,包括:

5.根据权利要求4所述的动态切换数据源的方法,其...

【专利技术属性】
技术研发人员:刘勇胡鹏郑航李磊熊家振张磊张佳敏
申请(专利权)人:中建三局信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1