一、背景 在SpringBoot mybatis 项目中,需要连接 多个数据源,连接多个数据库,需要连接一个Mysql数据库和一个oracle数据库和一个Redis 二、依赖 pom.xml or
在SpringBoot mybatis 项目中,需要连接 多个数据源,连接多个数据库,需要连接一个Mysql数据库和一个oracle数据库和一个Redis
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
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
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(); }}
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连接,使用了密码
pom.xml
org.springframework.boot spring-boot-starter-data-redis 2.4.4 io.lettuce lettuce-core
spring: redis: host: host port: 6379 password: 1
在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; }}
在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); } }}
注入
调用
@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文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0