简介

Java API 是 ShardingSphere-JDBC 中所有配置方式的基础,其他配置最终都将转化成为 Java API 的配置方式。

Java API 是最繁琐也是最灵活的配置方式,适合需要通过编程进行动态配置的场景下使用。

使用步骤

引入 Maven 依赖

  1. <dependency>
  2. <groupId>org.apache.shardingsphere</groupId>
  3. <artifactId>shardingsphere-jdbc-core</artifactId>
  4. <version>${shardingsphere.version}</version>
  5. </dependency>

构建数据源

ShardingSphere-JDBC 的 Java API 通过 Schema 名称、运行模式、数据源集合、规则集合以及属性配置组成。

通过 ShardingSphereDataSourceFactory 工厂创建的 ShardingSphereDataSource 实现自 JDBC 的标准接口 DataSource。

  1. String schemaName = "foo_schema"; // 指定逻辑 Schema 名称
  2. ModeConfiguration modeConfig = ... // 构建运行模式
  3. Map<String, DataSource> dataSourceMap = ... // 构建真实数据源
  4. Collection<RuleConfiguration> ruleConfigs = ... // 构建具体规则
  5. Properties props = ... // 构建属性配置
  6. DataSource dataSource = ShardingSphereDataSourceFactory.createDataSource(schemaName, modeConfig, dataSourceMap, ruleConfigs, props);

模式详情请参见模式配置

数据源详情请参见数据源配置

规则详情请参见规则配置

使用数据源

可通过 DataSource 选择使用原生 JDBC,或 JPA、Hibernate、MyBatis 等 ORM 框架。

以原生 JDBC 使用方式为例:

  1. // 创建 ShardingSphereDataSource
  2. DataSource dataSource = ShardingSphereDataSourceFactory.createDataSource(schemaName, modeConfig, dataSourceMap, ruleConfigs, props);
  3. String sql = "SELECT i.* FROM t_order o JOIN t_order_item i ON o.order_id=i.order_id WHERE o.user_id=? AND o.order_id=?";
  4. try (
  5. Connection conn = dataSource.getConnection();
  6. PreparedStatement ps = conn.prepareStatement(sql)) {
  7. ps.setInt(1, 10);
  8. ps.setInt(2, 1000);
  9. try (ResultSet rs = preparedStatement.executeQuery()) {
  10. while(rs.next()) {
  11. // ...
  12. }
  13. }
  14. }