iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SpringBoot Mybatis 多数据源 MySQL+Oracle+Redis
  • 123
分享到

SpringBoot Mybatis 多数据源 MySQL+Oracle+Redis

springbootmybatismysql 2023-09-20 13:09:02 123人浏览 薄情痞子
摘要

 一、背景 在SpringBoot mybatis 项目中,需要连接 多个数据源,连接多个数据库,需要连接一个Mysql数据库和一个oracle数据库和一个Redis 二、依赖 pom.xml or

 一、背景

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

您可能感兴趣的文档:

--结束END--

本文标题: SpringBoot Mybatis 多数据源 MySQL+Oracle+Redis

本文链接: https://www.lsjlt.com/news/412904.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作