SpringBoot-14-JdbcTemplate多数据源配置
在上一章节中我们已经介绍了在Springboot中使用JdbcTemplate来完成对mysql数据库的基本操作,本章节主要介绍当我们在项目中需要使用多个数据源的时候JdbcTemplate是怎么进行配置的。本章节是在上章节代码使用JdbcTemplate链接Mysql数据库基础上进行修改的。
1.JdbcTemplate多数据源配置
在application.yml
中设置我们要链接的数据库配置,例子如下:
server:
port: 8899
spring:
datasource:
primary:
jdbc-url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&useSSL=false
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
second:
jdbc-url: jdbc:mysql://localhost:3306/verse?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&useSSL=false
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
注:
-
在配置多数据源的时候,和单数据源区别在于
spring:datasource
后多设置一个数据源名称,例如primary,second来区分数据库来源。 -
在SpringBoos多数据源配置url中SpringBoot1.x和SpringBoot2.X有区别,SpringBoot1.x使用url进行链接,SpringBoot2.X使用jdbc-url进行链接。
2.对JBDC数据源进行初始化配置
在application.yml中配置过多数据源信息以后,我们需要创建一个配置类去加载这些配置信息,用来对数据库初始化。
@Configuration
public class MyDataSourceConfiguration {
/**
* 使用Primary来表示主数据有
* @return
*/
@Primary
@Bean
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.second")
public DataSource secondDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource") DataSource primaryDataSource) {
return new JdbcTemplate(primaryDataSource);
}
@Bean
public JdbcTemplate secondJdbcTemplate(@Qualifier("secondDataSource") DataSource secondaryDataSource) {
return new JdbcTemplate(secondaryDataSource);
}
}
注:
-
@Primary表示主数据源,在不指定数据源的情况下使用主数据源
-
为什么不用
@Qualifier
指定?当我们不指定的时候,会采用参数的名字来查找Bean,存在的话就注入。
-
当我们创建Bean的时候,默认会使用方法名称来作为Bean的名称,所以这里就对应上了。
在service层进行修改代码
@AllArgsConstructor
@Service
public class StudentServiceImpl implements StudentService {
private JdbcTemplate primaryJdbcTemplate;
private JdbcTemplate secondJdbcTemplate;
@Override
public List<Student> getAllSutdents() {
List<Student> students = primaryJdbcTemplate.query("select name,sex,age,mobile,email from student where is_enabled=1", (resultSet, i) -> {
Student stu = new Student();
stu.setName(resultSet.getString("name"));
stu.setSex(resultSet.getString("sex"));
stu.setAge(resultSet.getInt("age"));
stu.setMobile(resultSet.getString("mobile"));
stu.setEmail(resultSet.getString("email"));
return stu;
});
return students;
}
@Override
public int Create(String name,String sex, int age,String mobile, String email) {
int update = primaryJdbcTemplate.update("INSERT INTO student(name ,sex,age,mobile,email) VALUES(?,?,?,?,?)",
name, sex, age, mobile, email);
return update;
}
@Override
public int deleteByName(String name) {
return primaryJdbcTemplate.update("update student set is_enabled=0 where name = ?", name);
}
}
以上就是我介绍的JdbcTemplate对多数据源操作,代码测试可以通过http://localhost:8899/student/方法的方式进行测试。
如果您觉得本文不错,欢迎关注我支持,您的关注是我坚持的动力!
原创不易,转载请注明出处,感谢支持!如果本文对您有用,欢迎转发分享!
原文始发于微信公众号(springboot葵花宝典):SpringBoot-14-JdbcTemplate多数据源配置
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/184413.html