SpringBoot-14-JdbcTemplate多数据源配置

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后多设置一个数据源名称,例如primarysecond来区分数据库来源。

  • 在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-14-JdbcTemplate多数据源配置

原创不易,转载请注明出处,感谢支持!如果本文对您有用,欢迎转发分享!



原文始发于微信公众号(springboot葵花宝典):SpringBoot-14-JdbcTemplate多数据源配置

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/184413.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!