多数据源切换
发布网友
发布时间:2024-10-01 18:12
我来回答
共1个回答
热心网友
时间:2024-10-09 13:09
1. 使用场景:在调用dao层方法时,需要实现跨数据库访问和动态切换数据源的操作。
优点:不同数据源的操作可以通过同一份动态sql代码完成,只需切换不同的数据库连接驱动。
缺点:若切换的数据源是同一种数据库软件,只是库名不同则无问题。但如果跨数据库软件,sql动态代码只能支持标准的sql,从而失去了不同数据库中的特色功能函数等。
2. 实现方式
2.1 在配置文件中配置多个数据源。
2.2 添加pom依赖,例如使用springcloud alibaba的依赖,注意mysql8.0兼容问题。指定mysql-connector-java的版本号。
2.3 使用druid数据库连接池,推荐用于开发,以减少连接过程的消耗。使用池管理时,注意不要使用自带的配置,而是通过自己new DruidDataSource()方式,读取配置参数注入。否则,需要按照基础包中写死的路径进行配置。
2.4 实现DynamicDataSource类。
2.5 实现数据源配置类。
到上述步骤,多数据源配置的问题其实已经解决。但为了方便使用,可以使用aop来实现。
2.6 定义注解。
2.7 定义AOP。
2.8 在启动类中,记得配置@MapperScan。
2.9 在Service的方法上加入@DynamicDB试试。可以改一下注解的类型,加在Mapper层试试能否一样能执行。
热心网友
时间:2024-10-09 13:16
1. 使用场景:在调用dao层方法时,需要实现跨数据库访问和动态切换数据源的操作。
优点:不同数据源的操作可以通过同一份动态sql代码完成,只需切换不同的数据库连接驱动。
缺点:若切换的数据源是同一种数据库软件,只是库名不同则无问题。但如果跨数据库软件,sql动态代码只能支持标准的sql,从而失去了不同数据库中的特色功能函数等。
2. 实现方式
2.1 在配置文件中配置多个数据源。
2.2 添加pom依赖,例如使用springcloud alibaba的依赖,注意mysql8.0兼容问题。指定mysql-connector-java的版本号。
2.3 使用druid数据库连接池,推荐用于开发,以减少连接过程的消耗。使用池管理时,注意不要使用自带的配置,而是通过自己new DruidDataSource()方式,读取配置参数注入。否则,需要按照基础包中写死的路径进行配置。
2.4 实现DynamicDataSource类。
2.5 实现数据源配置类。
到上述步骤,多数据源配置的问题其实已经解决。但为了方便使用,可以使用aop来实现。
2.6 定义注解。
2.7 定义AOP。
2.8 在启动类中,记得配置@MapperScan。
2.9 在Service的方法上加入@DynamicDB试试。可以改一下注解的类型,加在Mapper层试试能否一样能执行。