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/方法的方式进行测试。

如果您觉得本文不错,欢迎关注我支持,您的关注是我坚持的动力!

 

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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值