sharing-jdbc读写分离(二)--自定义配置数据源

前言

  在使用shrading jdbc实现读写分离的基础上,本篇将介绍自定义配置数据源。读写分离配置可参考我另一篇文章:https://blog.csdn.net/u012786993/article/details/89368423
  配置代码参考我的GitHub:https://github.com/hubSKH/sharding-jdbc-demo/tree/pwd_dev

实现步骤

1、关闭sharding jdbc的自动配置

  正常情况下,应用sharding jdbc的jar包之后,工程启动sharding会读取配置文件(application.yml等)中对应的数据源配置(根据前缀),然后直接创建数据源。而此时,一些自定义的配置方式会导致SQLException等异常抛出,如以密文的形式配置数据库密码,创建数据源的时候会因为缺失解密操作而抛出“Access denied for user XXX”的SQLException。
  所以,在实现自定义配置数据源之前需要关闭sharding jdbc的数据源自动配置。具体做法为:在启动类的@SpringBootApplication的exclude增加io.shardingsphere.jdbc.spring.boot.SpringBootConfiguration类即可。
在这里插入图片描述

2、创建数据源配置类

  创建类ShardingDataSourceConfig,在类中实现自动以数据源装配,具体实现可参考上一步中关闭自动配置的SpringBootConfiguration类。
在这里插入图片描述
  然后根据配置前缀,循环读取数据源,创建数据源,本工程使用阿里的druid数据源,所以直接创建DruidDataSource数据源对象,其他使用其他数据源(c3p0,hikari,个人更喜欢使用druid)需要修改数据源对象,或者直接使用数据源接口DataSource。因为工程配置文件中,数据库密码以密文写入,在创建数据源时需要解密操作,通用接口DataSource满足不了自定义配置的操作。
在这里插入图片描述
  在创建数据源的同时,还可以自定义数据源最大连接、心跳等配置。考虑篇幅有限,数据源的大部分相同,本工程将这些数据源配置放置一起,每个数据源配置一样的参数。
在这里插入图片描述
  实际开发中,如果数据库的压力不一样的话,则不建议使用这种配置方式,应改为在每个数据源配的配置项中各自配置,然后由DataSourceUtil.getDataSource加载这些配置。不过要注意的是配置项的名称需要与对应数据源的属性相同(相同数据源,版本不同,属性也可能有所改变)。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: sharing-jdbc是一个基于Java的开源数据库中间件,提供了对数据库连接池、数据库读写分离、分库分表等功能的支持。使用sharing-jdbc可以简化我们对数据库的操作,提高系统的性能和可扩展性。 MyBatis是一个持久层框架,它提供了对数据库的操作方法和SQL语句的映射。在使用MyBatis时,我们可以配置数据源和数据库连接信息。将sharing-jdbc与MyBatis结合使用,可以实现对数据库的读写分离和分库分表功能。 Spring Boot是一个快速开发Spring应用的框架,它提供了简化配置和集成的功能。在Spring Boot应用中,我们可以使用YAML文件(.yml)来配置应用的各种参数和组件。通过在YAML配置文件中添加相应的配置信息,可以实现sharing-jdbc、MyBatis和Spring Boot的集成和配置。 在YAML配置文件中,我们需要配置数据库连接信息、数据源、MyBatis的相关配置sharing-jdbc的相关配置。例如,我们可以配置数据库的URL、用户名和密码,指定MyBatis的映射文件路径和配置文件路径,以及指定sharing-jdbc的相关信息。 配置sharing-jdbc的方式如下: ```yaml sharing-jdbc: dataSources: - name: dataSource1 dataSourceClassName: com.mysql.jdbc.Driver jdbcUrl: jdbc:mysql://localhost:3306/db1 username: root password: password1 shardingRuleConfigs: - defaultDataSourceName: dataSource1 defaultDatabaseStrategy: inline: algorithmExpression: ds_${user_id % 2} defaultTableStrategy: standard: algorithmExpression: t_${user_id % 16} bindingTables: - table_patterns: user_${0..15} actualDataNodes: dataSource1.user_${0..15} ``` 在以上示例中,我们配置了一个数据库连接池(dataSource1),并指定数据源的相关信息。然后,我们配置了分库分表的规则,根据用户ID分配数据库和数据表,并将其与数据源绑定。 通过这样的配置,我们可以在Spring Boot应用中方便地使用sharing-jdbc和MyBatis操作数据库,并利用分库分表功能提高应用的性能和扩展性。 ### 回答2: 在使用Spring Boot中整合Sharing-JDBC和MyBatis时,我们可以使用yml配置文件来配置相关信息。 首先,我们需要在yml配置文件中设置Sharing-JDBC数据源配置。具体配置内容如下: ``` # Sharing-JDBC 数据源配置 sharing: shardingsphere: datasource: name: # 数据源名称 url: # 数据库连接地址 username: # 数据库用户名 password: # 数据库密码 driver-class-name: # 数据库驱动类名 ``` 其中,name表示数据源的名称,url表示数据库连接地址,username表示数据库用户名,password表示数据库密码,driver-class-name表示数据库驱动类名。 接下来,我们需要配置MyBatis的相关信息。具体配置内容如下: ``` # MyBatis配置 mybatis: mapper-locations: classpath:mapper/*.xml # MyBatis Mapper文件的存放位置 type-aliases-package: com.example.model # 实体类的包名 ``` 其中,mapper-locations表示Mapper文件的存放位置,type-aliases-package表示实体类的包名。 然后,我们需要在Spring Boot的主配置类中使用@MapperScan注解来扫描Mapper接口所在的包,并将其注册为Spring Bean。具体配置内容如下: ```java @Configuration @MapperScan("com.example.mapper") // Mapper接口所在的包 public class MybatisConfig { } ``` 在以上配置完成之后,我们可以在项目中使用Sharing-JDBC和MyBatis进行数据库访问。比如,创建一个Mapper接口和对应的Mapper XML文件,进行SQL的编写和数据库操作。 以上就是使用Sharing-JDBC、MyBatis和Spring Boot整合的yml配置方式。通过配置yml文件,我们可以方便地配置数据源、MyBatis等相关信息,简化项目的配置和管理。 ### 回答3: sharing-jdbc是一个基于Java的数据库中间件,可以方便地支持数据库的分库分表操作。而MyBatis是一个优秀的持久层框架,与数据库之间的关系映射由它负责。Spring Boot是一个快速开发框架,可以简化Java应用程序的配置和部署。 在Spring Boot中,可以使用YAML(又称为YML)文件来进行配置。YAML是一种人类可读的数据序列化格式,与JSON类似,但语法更加简洁。使用YAML配置文件,可以将各种配置信息以键值对的形式存储在一个文件中。 当使用sharing-jdbc、MyBatis和Spring Boot一起使用时,我们需要在YAML配置文件中进行相应的配置。首先,需要配置数据库连接信息,包括数据库URL、用户名和密码等。其次,需要配置MyBatis的相关信息,如Mapper的路径、扫描的包等。最后,还需要配置sharing-jdbc的相关信息,包括分库分表的策略、数据库的数据源等。 下面是一个示例的YAML配置文件: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: 123456 mybatis: mapper-locations: classpath:mapper/*.xml sharing-jdbc: data-sources: ds_0: jdbc-url: jdbc:mysql://localhost:3306/db_0?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: 123456 ds_1: jdbc-url: jdbc:mysql://localhost:3306/db_1?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: 123456 sharding-rule-config-file: classpath:sharding-jdbc.yml ``` 在这个示例中,我们配置了一个主数据库(test)和两个分库(db_0和db_1)。分别使用了不同的数据源(ds_0和ds_1)进行连接。同时,我们还指定了MyBatis的Mapper文件路径和sharing-jdbc的分库分表策略文件路径。 通过这样的配置,我们可以在Spring Boot应用中方便地使用sharing-jdbc和MyBatis来实现数据库的分库分表操作。这种配置方式简洁明了,提高了开发效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值