springboot+MybatisPlus实现oracle的双数据源功能

springboot+MybatisPlus实现oracle的双数据源功能

一、application.yml中的配置

spring:
  datasource:
    dynamic:
      primary: business # 设置默认的数据源
      datasource:
        business:
          url: jdbc:oracle:thin:@10.243.10.11:1521:orcl
          username: old_username
          password: old_password
          driver-class-name: oracle.jdbc.OracleDriver
        userInfo:
          url: jdbc:oracle:thin:@10.243.10.12:1521:orcl 
          username: new_user
          password: new_password
          driver-class-name: oracle.jdbc.OracleDriver
	hikari:
	#池中维护的最小空闲连接数
	minimum-idle: 2
	#池中最大连接数,包括闲置和使用中的连接
	maximum-pool-size: 15
	#自动提交从池中返回的连接
	auto-commit: true
	#连接允许在池中闲置的最长时间
	idle-timeout: 60000
	#连接池的用户定义名称,主要出现在日志记录和JMX管理控制台中以识别池和池配置
	pool-name: HikariDataSourcePool
	#池中连接最长生命周期
	max-lifetime: 6000
	#记录消息之前连接可能离开池的时间量,表示可能的连接泄漏
	leak-detection-threshold: 40000
	#数据库连接超时时间,默认30秒,即30000
	connection-timeout: 30000
	#检查连接sql
	connection-test-query: SELECT 1 FROM DUAL

二、MybatisPlusConfig.java的代码

@Configuration
//mapper的包路径
@MapperScan ("com.mocha.framework.**.mapper"})
public class MybatisPlusConfig  {
	/*序列生成器/
	@Bean
	public OracleKeyGenerator oracleKeyGenerator() {
		return new OracleKeyGenerator();
	}
	/*分页插件/
	@Bean
	public MybatisPlusInterceptor mybatisPlusInterceptor({
		final MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
		final PaginationInnerInterceptor paginationInnerInterceptor= new PaginationInnerInterceptor();
		paginationInnerInterceptor.setDbType(DbType.ORACLE);
		paginationInnerInterceptor.set0verflow(true);
		interceptor.addInnerInterceptor(paginationInnerInterceptor);
		final OptimisticLockerInnerInterceptor optimisticLockerInnerIntercepto = new OptimisticLockerInnerIntenceptor();
		interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor);
		return interceptor;
	}
}

三、pom.xml代码

<!-- 添加dynamic依赖 -->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
	<version>3.5.1</version>
</dependency>

四、数据库查询实例

1、默认数据库实例

OrderMapper 代码(使用默认的数据库)

@Mapper
public interface OrderMapper extends BaseMapper<OrderPo> {
	@Select("SELECT u.* FROM order_info u")
	List<OrderPo> selectListOrderInfo();
}

OrderService 代码

@Service
public class OrderService {
    @Autowired
    private OrderMapper oserMapper;

    public List<OrderPo> getAllOrder() {
        return oserMapper.selectListOrderInfo();
    }
}

2、第二个数据库实例

UserMapper 代码(指定第二个数据库)

@DS("userInfo")//指定第二个数据库,若使用默认数据库时不需要用该注释
@Mapper
public interface UserMapper extends BaseMapper<UserPo> {
	@Select("SELECT u.* FROM user_info u")
	List<UserPo> selectListUserInfo();
}

UserService 代码

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public List<UserPo> getListUserInfo() {
        return userMapper.selectListUserInfo();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值