+++ title = “使用 YAML 配置” weight = 2 +++
<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-orchestration</artifactId> <version>${shardingsphere.version}</version> </dependency> <!-- 使用 ZooKeeper 时,需要引入此模块 --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-orchestration-center-zookeeper-curator</artifactId> <version>${shardingsphere.version}</version> </dependency> <!-- 使用 Etcd 时,需要引入此模块 --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-orchestration-center-etcd</artifactId> <version>${shardingsphere.version}</version> </dependency>
以下示例将 ZooKeeper 作为配置中心和注册中心。
orchestration: orchestration_ds: orchestrationType: registry_center,config_center,metadata_center instanceType: zookeeper serverLists: localhost:2181 namespace: orchestration props: overwrite: true
// 创建 OrchestrationShardingSphereDataSource DataSource dataSource = YamlOrchestrationShardingSphereDataSourceFactory.createDataSource(yamlFile);
通过 YamlOrchestrationShardingSphereDataSourceFactory 工厂创建的 OrchestrationShardingSphereDataSource 实现自 JDBC 的标准接口 DataSource。 可通过 DataSource 选择使用原生 JDBC,或JPA, MyBatis 等 ORM 框架。
以原生 JDBC 使用方式为例:
DataSource dataSource = YamlOrchestrationShardingSphereDataSourceFactory.createDataSource(yamlFile); 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=?"; try ( Connection conn = dataSource.getConnection(); PreparedStatement ps = conn.prepareStatement(sql)) { ps.setInt(1, 10); ps.setInt(2, 1000); try (ResultSet rs = preparedStatement.executeQuery()) { while(rs.next()) { // ... } } }