使用 YAML 配置
引入 Maven 依赖
<dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-jdbc-governance</artifactId><version>${shardingsphere.version}</version></dependency><!-- 使用 ZooKeeper 时,需要引入此模块 --><dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-governance-repository-zookeeper-curator</artifactId><version>${shardingsphere.version}</version></dependency><!-- 使用 Etcd 时,需要引入此模块 --><dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-governance-repository-etcd</artifactId><version>${shardingsphere.version}</version></dependency>
规则配置
以下示例将 ZooKeeper 作为配置中心和注册中心。
governance:name: governance_dsregistryCenter:type: ZookeeperserverLists: localhost:2181overwrite: true
// 创建 GovernanceShardingSphereDataSourceDataSource dataSource = YamlGovernanceShardingSphereDataSourceFactory.createDataSource(yamlFile);
使用 GovernanceShardingSphereDataSource
通过 YamlGovernanceShardingSphereDataSourceFactory 工厂创建的 GovernanceShardingSphereDataSource 实现自 JDBC 的标准接口 DataSource。 可通过 DataSource 选择使用原生 JDBC,或JPA, MyBatis 等 ORM 框架。
以原生 JDBC 使用方式为例:
DataSource dataSource = YamlGovernanceShardingSphereDataSourceFactory.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()) {// ...}}}