当前位置: 代码网 > it编程>编程语言>Java > springboot jdbcTemplate 多源配置及特殊场景使用说明

springboot jdbcTemplate 多源配置及特殊场景使用说明

2025年07月22日 Java 我要评论
以mysql 说明:对于多数据源中大致分为两种 一个mysql服务器,多个库,另外一种就是多个mysql服务器多个库表。对于以上通用配置如下:以mysql8说明#第一个库spring.datasour

以mysql 说明:

对于多数据源中大致分为两种 一个mysql服务器,多个库,另外一种就是多个mysql服务器多个库表。

对于以上通用配置如下:以mysql8说明

#第一个库
spring.datasource.master.type=com.alibaba.druid.pool.druiddatasource
spring.datasource.master.jdbc-url=jdbc:mysql://localhost:3306/aa?&servertimezone=asia/shanghai
spring.datasource.master.username=**
spring.datasource.master.password=**
spring.datasource.master.driver-class-name=com.mysql.cj.jdbc.driver
#第二个库
spring.datasource.slave.type=com.alibaba.druid.pool.druiddatasource
spring.datasource.slave.jdbcurl=jdbc:mysql://localhost:3306/bb?&servertimezone=asia/shanghai
#spring.datasource.slave.username=**
#spring.datasource.slave.password=**
#spring.datasource.slave.driver-class-name=com.mysql.cj.jdbc.driver

mysql8和mysql5版本上配置的驱动要注意  ,8对应 com.mysql.cj.jdbc.driver   5对应com.mysql.jdbc.driver

另外 我使用的是jdbc ,所以url就使用  jdbcurl.

以下 配置说明:

@configuration
public class datasourceconfiguration {
    @bean
    @configurationproperties(prefix = "spring.datasource.master")
    @primary
    public datasource masterdatasource() {
        return datasourcebuilder.create().build();
    }
    @bean
    @configurationproperties(prefix = "spring.datasource.slave")
    public datasource slavedatasource() {
        return datasourcebuilder.create().build();
    }
    @bean
    @primary
    public jdbctemplate masterjdbctemplate(@qualifier("masterdatasource") datasource primarydatasource) {
        return new jdbctemplate(primarydatasource);
    }
    @bean
    public jdbctemplate slavejdbctemplate(@qualifier("slavedatasource") datasource secondarydatasource) {
        return new jdbctemplate(secondarydatasource);
    }
}

以下使用

@resource(name = "masterjdbctemplate") private jdbctemplate masterjdbctemplate; @resource(name = "slavejdbctemplate") private jdbctemplate slavejdbctemplate;

这以上 特别说明,针对bean的名字一定要备注上,不然会默认指向。

有一种特殊情景下使用说明: 

在数据同步的时候,需要进行执行事务。但是又是在同一个服务器下的两个库,这个时候我们实际执行的是mysql库的事务。这个时候我们使用一种不区分库而又要执行的事务。以下进行说明:

spring.datasource.type=com.alibaba.druid.pool.druiddatasource
spring.datasource.jdbc-url=jdbc:mysql://127.0.0.1:3306/?&servertimezone=asia/shanghai
spring.datasource.username=**
spring.datasource.password=**
spring.datasource.driver-class-name=com.mysql.cj.jdbc.driver

使用这种,不指定库,只指定服务器。

配置:

@configuration
public class datasourceconfiguration {
    @bean
    @configurationproperties(prefix = "spring.datasource")
    public datasource datasource() {
        return datasourcebuilder.create().build();
    }
    @bean
    public jdbctemplate jdbctemplate(datasource datasource) {
        return new jdbctemplate(datasource);
    }
}

使用:

@autowired
private jdbctemplate jdbctemplate;

备注:这种模式使用,就需要在执行sql的方式注意: 格式:   <database>.<tablename>

例如: 需要执行a数据库的b表的sql:     a.b

补充一种使用方法 一个事务涉及到的多个sql,这些sql分别对应不同的database(事务针对服务器)

@autowired
private transactiontemplate transactiontemplate;
transactiontemplate.execute(status -> {
                try {
                    jdbctemplate.execute("set gtid_next='" +gtid + "'");
                    list<string> arrsql = json.parsearray(sqlarr, string.class);
                    for (string sql : arrsql) {
                        jdbctemplate.execute(sql);
                    }
                    return null;
                } catch (exception e) {
                    status.setrollbackonly();
                    e.printstacktrace();             
                    return null;
                }
            });

到此这篇关于springboot jdbctemplate 多源配置以及特殊场景使用的文章就介绍到这了,更多相关springboot jdbctemplate 多源配置内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

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

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com