我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SpringBoot Mybatis 多数据源 MySQL+Oracle+Redis

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SpringBoot Mybatis 多数据源 MySQL+Oracle+Redis

 一、背景

在SpringBoot Mybatis 项目中,需要连接 多个数据源,连接多个数据库,需要连接一个MySQL数据库和一个Oracle数据库和一个Redis

二、依赖 pom.xml

                     org.springframework.boot            spring-boot-starter-web                            org.springframework.boot            spring-boot-starter-test            test                                    mysql            mysql-connector-java            8.0.26                            org.springframework.boot            spring-boot-starter-jdbc                            org.mybatis.spring.boot            mybatis-spring-boot-starter            1.3.2                                    com.oracle.database.jdbc            ojdbc8            19.8.0.0                                    org.springframework.boot            spring-boot-starter-data-redis            2.4.4                                    org.projectlombok            lombok            1.18.16            provided                            javax.persistence            javax.persistence-api            2.2                                    io.springfox            springfox-swagger2            2.9.2                                    io.springfox            springfox-swagger-ui            2.9.2                                    cn.easyproject            orai18n            12.1.0.2.0            

三、项目结构

四、application.yml

spring.datasource.url数据库的JDBC URL

spring.datasource.jdbc-url用来重写自定义连接池

Hikari没有url属性,但是有jdbcUrl属性,在这中情况下必须使用jdbc_url

server:  port: 8080spring:  datasource:    primary:      jdbc-url: jdbc:mysql://localhost:3306/database_name      username: root      password: 123456      driver-class-name: com.mysql.cj.jdbc.Driver    secondary:      jdbc-url: jdbc:oracle:thin:@localhost:1521/ORCL      username: root      password: 123456      driver-class-name: oracle.jdbc.driver.OracleDriver    

五、MySQL配置类

MysqlDataSourceConfig

使用注解@Primary配置默认数据源

package com.example.multipledata.config.mysqlconfig;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.annotation.MapperScan;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.jdbc.DataSourceBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;@Configuration@MapperScan(basePackages = MysqlDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "mysqlSqlSessionFactory")public class MysqlDataSourceConfig {       static final String PACKAGE = "com.example.multipledata.mapper.mysqlmapper";    static final String MAPPER_LOCATION = "classpath*:mapper/mysqlmapper/*.xml";    @Primary    @Bean(name = "mysqlDataSource")    @ConfigurationProperties(prefix = "spring.datasource.primary")    public DataSource mysqlDataSource() {        return DataSourceBuilder.create().build();    }    @Primary    @Bean(name = "mysqlTransactionManager")    public DataSourceTransactionManager mysqlTransactionManager() {        return new DataSourceTransactionManager((mysqlDataSource()));    }    @Primary    @Bean(name = "mysqlSqlSessionFactory")    public SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("mysqlDataSource") DataSource mysqlDatasource) throws Exception {        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();        sessionFactory.setDataSource(mysqlDatasource);        sessionFactory.setMapperLocations(                new PathMatchingResourcePatternResolver().getResources(MysqlDataSourceConfig.MAPPER_LOCATION)        );        return sessionFactory.getObject();    }}

六、Oracle配置类

OracleDataSourceConfig

package com.example.multipledata.config.oracleconfig;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.annotation.MapperScan;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.jdbc.DataSourceBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.sql.DataSource;@Configuration@MapperScan(basePackages = OracleDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "oracleSqlSessionFactory")public class OracleDataSourceConfig {    static final String PACKAGE = "com.example.multipledata.mapper.oraclemapper";    static final String MAPPER_LOCATION = "classpath*:mapper/oraclemapper/*.xml";    @Bean(name = "oracleDataSource")    @ConfigurationProperties(prefix = "spring.datasource.secondary")    public DataSource oracleDataSource() {        return DataSourceBuilder.create().build();    }    @Bean(name = "oracleTransactionManager")    public DataSourceTransactionManager oracleTransactionManager() {        return new DataSourceTransactionManager(oracleDataSource());    }    @Bean(name = "oracleSqlSessionFactory")    public SqlSessionFactory oracleSqlSessionFactory(@Qualifier("oracleDataSource") DataSource oracleDataSource) throws Exception {        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();        sessionFactory.setDataSource(oracleDataSource);        sessionFactory.setMapperLocations(                new PathMatchingResourcePatternResolver().getResources(OracleDataSourceConfig.MAPPER_LOCATION)        );        return sessionFactory.getObject();    }}

原文地址:

https://www.cnblogs.com/windy-xmwh/p/14748567.html

七、增加Redis连接

注意,我的Redis连接,使用了密码

7.1 新增依赖 pom.xml

pom.xml

                            org.springframework.boot            spring-boot-starter-data-redis            2.4.4                            io.lettuce            lettuce-core        

7.2 配置Redis连接  application.yml

  spring:    redis:        host: host        port: 6379        password: 1

7.3 Redis 配置文件 RedisConfig

在config目录下,新增RedisConfig文件

package com.example.kyjjserver.config;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer;import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;@Configurationpublic class RedisConfig {    @Value("${spring.redis.host}")    private String redisHost;    @Value("${spring.redis.port}")    private int redisPort;    @Value("${spring.redis.password}")    private String redisPassword;    @Bean    public RedisConnectionFactory redisConnectionFactory() {        LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisHost, redisPort);        lettuceConnectionFactory.setPassword(redisPassword);        return lettuceConnectionFactory;    }    @Bean    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {        RedisTemplate redisTemplate = new RedisTemplate<>();        redisTemplate.setConnectionFactory(redisConnectionFactory);        redisTemplate.setKeySerializer(new StringRedisSerializer());        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());        redisTemplate.setHashKeySerializer(new StringRedisSerializer());        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());        redisTemplate.afterPropertiesSet();        return redisTemplate;    }}

7.4 操作Redis

7.4.1 封装操作方法

在service目录下,新增RedisService文件

package com.example.kyjjserver.service;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Service;import java.util.Set;@Servicepublic class RedisService {    private final RedisTemplate redisTemplate;    @Autowired    public RedisService(RedisTemplate redisTemplate) {        this.redisTemplate = redisTemplate;    }    public void deleteData(String key) {        redisTemplate.delete(key);    }    public void deleteDataAll(String pattern) {        Set keys = redisTemplate.keys("*" + pattern + "*");        if (keys != null) {            redisTemplate.delete(keys);        }    }}

7.4.2 调用方法,操作Redis库

注入

调用

@Componentpublic class DeleteRedisInfo {    @Autowired    private RedisService redisService;    @Transactional    public AAA deleteUser(xxx xxx){        // 删除手机号        redisService.deleteDataAll(xxx);              return xxx;    }}

来源地址:https://blog.csdn.net/qq_39208536/article/details/132575001

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SpringBoot Mybatis 多数据源 MySQL+Oracle+Redis

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

详解SpringBoot和Mybatis配置多数据源

目前业界操作数据库的框架一般是 Mybatis,但在很多业务场景下,我们需要在一个工程里配置多个数据源来实现业务逻辑。在SpringBoot中也可以实现多数据源并配合Mybatis框架编写xml文件来执行SQL。在SpringBoot中,配
2023-05-31

在springboot中使用mybatis如何实现多数据源

这篇文章给大家介绍在springboot中使用mybatis如何实现多数据源,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。说起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务。我们
2023-05-31

Springboot怎么集成mybatis实现多数据源配置

本文小编为大家详细介绍“Springboot怎么集成mybatis实现多数据源配置”,内容详细,步骤清晰,细节处理妥当,希望这篇“Springboot怎么集成mybatis实现多数据源配置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入
2023-07-02

springboot中如何利用mybatis-plus配置多数据源

这篇文章主要介绍“springboot中如何利用mybatis-plus配置多数据源”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot中如何利用mybatis-plus配置多数据源”
2023-06-08

springboot redis如何使用lettuce配置多数据源

这篇文章将为大家详细讲解有关springboot redis如何使用lettuce配置多数据源,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。springboot是什么springboot一种全新的编程规范
2023-06-14

ruoyi(若依)配置多数据源(mysql+postgresql),rouyi(Springboot)多数据源设置

一、除了MySQL驱动,我们还需要用到postgresql的驱动,所以我们先把驱动的依赖给导入进来 org.postgresql postgresql
2023-08-17

springboot多数据源配置

简介 开发当中经常会遇到需要进行多库多表数据整合的需求,在无法拆分项目的情况下,就需要在一个项目中配置多数据源,实现多库数据的整合。本文是在springboot框架的基础上进行的多数据源配置,可参考,也欢迎指正 1、第一步:applicat
2023-08-24

编程热搜

目录