dynamic-datasource-spring-boot-starter

2 篇文章 0 订阅
1 篇文章 0 订阅

Dynamic Datasource

🍑 A springboot tool that provides dynamic data sources

👉 https://gitee.com/wdyun 👈

👉 dynamic-datasource-spring-boot-starter 👈

Maven Central

-------------------------------------------------------------------------------

🌎English Documentation


📚简介

dynamic-datasource-spring-boot-starter是基于springboot开发的一款多数据源动态切换的开发工具。

只需在springboot项目中导入依赖 即可方便快捷的开发多数据源项目,并且支持多数据源的分布式事务。

为您的多数据源项目开发保驾护航。

🍺目的

专门为springboot项目提供动态数据源支持的开源java项目
旨在提供多数据源的一键式支持。

🐮特性

  • 多数据源配置简单,只需在配置文件中配置附加数据源即可。
  • 支持多种数据库类型(mysql,postgresql,oracle)。
  • 支持使用注解动态切换数据源
  • 支持从 Mapper接口层切换多数据源,方便快捷,彻底的解决必须从 Controller 里切换数据源的麻烦。
  • 提供mybatis环境下的纯读写分离方案。
  • 提供基于jta atomikos的分布式事务。
  • 支持分布式事务与普通事务的配置切换。
  • 普通事务支持多种数据源(druid,c3po,dbcp)。

📦安装

🍊Maven

在项目的pom.xml的dependencies中加入以下内容:

<dependency>
  <groupId>com.enbatis</groupId>
  <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
  <version>${最新版本}</version>
</dependency>

在yml文件里面添加多数据源的配置

spring:
  datasource:
    dynamic:
      name: master,slave
      default: master
      master:
        type: com.alibaba.druid.pool.xa.DruidXADataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        username: xxx
        password: xxxxxxx
        url: jdbc:mysql://xxxxx:3306/test01?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
        initialSize: 5
        minIdle: 5
        maxActive: 20
      slave:
        type: com.alibaba.druid.pool.xa.DruidXADataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        username: xxx
        password: xxxxxxx
        url: jdbc:mysql://xxxxx:3306/test02?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
        initialSize: 5
        minIdle: 5
        maxActive: 20

在mapper接口添加数据源的配置(默认数据源可不添加)
(master为默认的数据源)


@MybatisMapper(name = "master") 
public interface SysUserMapper extends BaseMapper<SysUser> {
    List<SysUser> list1();
}

@MybatisMapper(name = "slave")
public interface SysUserMapper2 extends BaseMapper<SysUser> {

}

使用分布式事务示例如下(只需在需要事务的方法上加入DynamicTx注解)

   
@Service
public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper,SysUser > implements SysUserService {

    @DynamicTx
    @Override
    public boolean tx() {
            SysUser sysUser = new SysUser();
            sysUser.setId(IdWorker.getId());
            sysUser.setSex("男");
            sysUser.setUsername("sysUserMapper1");
            baseMapper.addEntity(sysUser);

            System.out.println(10/0);

            SysUser sysUser2 = new SysUser();
            sysUser2.setId(IdWorker.getId());
            sysUser2.setSex("男");
            sysUser2.setUsername("sysUserMapper2");
            sysUserMapper2.addEntity(sysUser2);
            return false;
    }

}

🚽示例项目

https://gitee.com/wdyun/hrm

DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user`  (
  `id` bigint(64) NOT NULL COMMENT '主键',
  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户',
  `sex` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'sex',
  `deleted` int(2) NULL DEFAULT 0,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES (1443577766556602368, 'test01', '男', 0);

SET FOREIGN_KEY_CHECKS = 1;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: dynamic-datasource-spring-boot-starter是一个基于Spring Boot的动态数据源管理工具。它提供了一种简单而强大的方式来配置和管理多个数据源,并能在运行时动态切换数据源。 在3.4.1版本中,该工具进行了一些改进和增强。首先,它支持了Spring Boot 2.x版本,这意味着我们可以在使用最新版本的Spring Boot框架的同时,依然能够使用该工具来管理数据源。 此外,3.4.1版本对多数据源的配置进行了优化,使得配置更加简洁和灵活。我们可以通过在application.properties或application.yml配置文件中指定数据源相关的属性来定义多个数据源,而不再需要编写繁琐的代码。 另外一项改进是在动态数据源切换方面。在之前的版本中,我们需要手动编写代码来切换数据源,而在3.4.1版本中,该工具已经提供了自动切换数据源的功能。我们只需要在需要切换数据源的方法或类上加上@DS注解,并指定要切换的数据源,即可实现自动切换数据源的功能。 最后值得一提的是,dynamic-datasource-spring-boot-starter 3.4.1还提供了一些其他的功能和特性,比如数据源监控,可扩展性和高可用性等。这些功能使得该工具在实际项目中的使用更加方便和可靠。 综上所述,dynamic-datasource-spring-boot-starter 3.4.1是一个功能强大、易于使用的动态数据源管理工具,它适用于Spring Boot框架,并在多数据源配置和动态数据源切换方面进行了改进和优化。它的出现为我们开发和管理多数据源的项目提供了便利,同时也提高了项目的可维护性和灵活性。 ### 回答2: dynamic-datasource-spring-boot-starter是一个基于Spring Boot的动态数据源管理的工具包。它提供了一种简单而灵活的方式来配置和管理多数据源。 首先,dynamic-datasource-spring-boot-starter可以方便地集成到Spring Boot项目中。通过在pom.xml文件中引入相应的依赖,即可将该工具包引入项目中。然后,在application.yml文件中进行相应的配置,即可使用该工具包提供的功能。 其次,dynamic-datasource-spring-boot-starter可以轻松地配置多数据源。在配置文件中,可以指定多个数据源的连接信息,包括数据库的url、用户名、密码等。在需要使用数据源的地方,可以通过@DS注解来指定要使用的数据源。这样,就可以很方便地切换不同的数据源,实现读写分离或者分库分表等需求。 此外,dynamic-datasource-spring-boot-starter还提供了一些高级功能。比如,支持动态添加和删除数据源,可以在程序运行中动态地切换数据源;支持AOP切面,方便地对方法进行切面处理;支持多数据源的事务管理,保证了数据的一致性。 总之,dynamic-datasource-spring-boot-starter是一个功能强大而又灵活的动态数据源管理工具包。它使得在Spring Boot项目中配置和管理多数据源变得非常简单和方便,可以满足各种复杂的数据源切换和管理需求。它的出现极大地简化了多数据源的配置和管理工作,同时提供了一些高级功能,使得开发人员可以更加专注于业务逻辑的实现。 ### 回答3: dynamic-datasource-spring-boot-starter 3.4.1 是一个用于Spring Boot项目的动态数据源管理工具。它提供了一种简单而强大的方式来配置和管理多个数据源。 动态数据源管理是在一个应用程序中使用多个数据源的一种常见需求。通过使用 dynamic-datasource-spring-boot-starter,我们可以在一个Spring Boot应用程序中轻松地设置和切换多个数据源。 使用 dynamic-datasource-spring-boot-starter 的好处之一是它能够自动根据配置文件中的信息来创建和管理数据源。我们只需要在配置文件中指定要使用的数据源的名称、连接信息、用户名和密码等,dynamic-datasource-spring-boot-starter 就能自动根据这些信息创建数据源,并将其注册到应用程序的数据源管理器中。 另一个优点是 dynamic-datasource-spring-boot-starter 支持动态切换数据源。在应用程序运行时,我们可以通过调用相应的API来切换数据源。这在一些需要根据用户角色或环境设置不同数据源的场景中非常有用。 除了基本的数据源管理功能,dynamic-datasource-spring-boot-starter 还提供了一些其他有用的特性,例如动态创建数据源、多数据源的事务管理、数据源监控和统计等。 总而言之,dynamic-datasource-spring-boot-starter 3.4.1 是一个强大的工具,它简化了在Spring Boot应用程序中创建和管理多个数据源的过程,并提供了一些额外的功能来满足不同场景下的需求。如果你的应用程序需要使用多个数据源,dynamic-datasource-spring-boot-starter 可能是一个很好的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值