yml配置mysql自动重连_Spring Boot 动态数据源(yml配置,多数据源自动切换)

本文介绍了如何在Spring Boot应用中实现动态数据源配置,包括yml配置文件中设置多数据源,并实现自动重连。通过在启动类中添加注解,注册动态数据源,以及在需要的方法上使用`@TargetDataSource`注解来指定数据源,实现了数据源的切换和管理。同时,文章提到了在使用MyBatis时,`@TargetDataSource`注解不能直接在接口类Mapper上使用。
摘要由CSDN通过智能技术生成

1、在启动类添加注解,注册动态多数据源:

@SpringBootApplication

@Import({DynamicDataSourceRegister.class}) // 注册动态多数据源

public class OrangeplusApplication extends WebMvcConfigurerAdapter {

protected final static Logger logger = LoggerFactory.getLogger(OrangeplusApplication.class);

public static void main(String[] args) {

SpringApplication.run(OrangeplusApplication.class, args);

logger.info("Application is success!");

}

}

2、yml配置文件中数据源配置内容为:

spring:

profiles: dev

datasource:

url: jdbc:mysql://127.0.0.1:3306/orangeplus?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull

username: root

password: 123456

driver-class-name: com.mysql.jdbc.Driver

# 更多数据源

custom:

profiles: dev

datasource:

names: ds1,ds2

ds1:

driver-class-name: oracle.jdbc.driver.OracleDriver

url: jdbc:oracle:thin:@localhost:1521:oracle

username: root

password: orcl#ncu

ds2:

driver-class-name: com.mysql.jdbc.Driver

url: jdbc:mysql://localhost:3306/orangeplus2?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull

username: root

password: 123456

3、在需要的方法上使用注解指定数据源,简单代码示例:

@Service

public class StudentService {

@Autowired

private JdbcTemplate jdbcTemplate;

// MyBatis的Mapper方法定义接口

@Autowired

private StudentMapper studentMapper;

@TargetDataSource(name="ds2")

public List likeName(String name){

return studentMapper.likeName(name);

}

public List likeNameByDefaultDataSource(String name){

return studentMapper.likeName(name);

}

/**

* 不指定数据源使用默认数据源

*/

public List getList(){

String sql = "SELECT ID,NAME,SCORE_SUM,SCORE_AVG, AGE FROM STUDENT";

return (List) jdbcTemplate.query(sql, new RowMapper(){

@Override

public Student mapRow(ResultSet rs, int rowNum) throws SQLException {

Student stu = new Student();

stu.setId(rs.getInt("ID"));

stu.setAge(rs.getInt("AGE"));

stu.setName(rs.getString("NAME"));

stu.setSumScore(rs.getString("SCORE_SUM"));

stu.setAvgScore(rs.getString("SCORE_AVG"));

return stu;

}

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值