不应用Spring

引入Maven依赖

<dependency>    <groupId>org.apache.shardingsphere</groupId>    <artifactId>sharding-jdbc-core</artifactId>    <version>${sharding-sphere.version}</version></dependency>

基于Java编码的规定配置

    // 配置实在数据源    Map<String, DataSource> dataSourceMap = new HashMap<>();        // 配置主库    BasicDataSource masterDataSource = new BasicDataSource();    masterDataSource.setDriverClassName("com.mysql.jdbc.Driver");    masterDataSource.setUrl("jdbc:mysql://localhost:3306/ds_master");    masterDataSource.setUsername("root");    masterDataSource.setPassword("");    dataSourceMap.put("ds_master", masterDataSource);        // 配置第一个从库    BasicDataSource slaveDataSource1 = new BasicDataSource();    slaveDataSource1.setDriverClassName("com.mysql.jdbc.Driver");    slaveDataSource1.setUrl("jdbc:mysql://localhost:3306/ds_slave0");    slaveDataSource1.setUsername("root");    slaveDataSource1.setPassword("");    dataSourceMap.put("ds_slave0", slaveDataSource1);        // 配置第二个从库    BasicDataSource slaveDataSource2 = new BasicDataSource();    slaveDataSource2.setDriverClassName("com.mysql.jdbc.Driver");    slaveDataSource2.setUrl("jdbc:mysql://localhost:3306/ds_slave1");    slaveDataSource2.setUsername("root");    slaveDataSource2.setPassword("");    dataSourceMap.put("ds_slave1", slaveDataSource2);        // 配置读写拆散规定    MasterSlaveRuleConfiguration masterSlaveRuleConfig = new MasterSlaveRuleConfiguration("ds_master_slave", "ds_master", Arrays.asList("ds_slave0", "ds_slave1"));        // 获取数据源对象    DataSource dataSource = MasterSlaveDataSourceFactory.createDataSource(dataSourceMap, masterSlaveRuleConfig, new Properties());

基于Yaml的规定配置

或通过Yaml形式配置,与以上配置等价:

dataSources:  ds_master: !!org.apache.commons.dbcp.BasicDataSource    driverClassName: com.mysql.jdbc.Driver    url: jdbc:mysql://localhost:3306/ds_master    username: root    password:   ds_slave0: !!org.apache.commons.dbcp.BasicDataSource    driverClassName: com.mysql.jdbc.Driver    url: jdbc:mysql://localhost:3306/ds_slave0    username: root    password:  ds_slave1: !!org.apache.commons.dbcp.BasicDataSource    driverClassName: com.mysql.jdbc.Driver    url: jdbc:mysql://localhost:3306/ds_slave1    username: root    password: masterSlaveRule:  name: ds_ms  masterDataSourceName: ds_master  slaveDataSourceNames: [ds_slave0, ds_slave1]  props:  sql.show: true
    DataSource dataSource = YamlMasterSlaveDataSourceFactory.createDataSource(yamlFile);

应用原生JDBC

通过YamlMasterSlaveDataSourceFactory工厂和规定配置对象获取MasterSlaveDataSource,MasterSlaveDataSource实现自JDBC的标准接口DataSource。而后可通过DataSource抉择应用原生JDBC开发,或者应用JPA, MyBatis等ORM工具。
以JDBC原生实现为例:

DataSource dataSource = YamlMasterSlaveDataSourceFactory.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 preparedStatement = conn.prepareStatement(sql)) {    preparedStatement.setInt(1, 10);    preparedStatement.setInt(2, 1001);    try (ResultSet rs = preparedStatement.executeQuery()) {        while(rs.next()) {            System.out.println(rs.getInt(1));            System.out.println(rs.getInt(2));        }    }}

应用Spring

引入Maven依赖

<!-- for spring boot --><dependency>    <groupId>org.apache.shardingsphere</groupId>    <artifactId>sharding-jdbc-spring-boot-starter</artifactId>    <version>${sharding-sphere.version}</version></dependency><!-- for spring namespace --><dependency>    <groupId>org.apache.shardingsphere</groupId>    <artifactId>sharding-jdbc-spring-namespace</artifactId>    <version>${sharding-sphere.version}</version></dependency>

基于Spring boot的规定配置

spring.shardingsphere.datasource.names=master,slave0,slave1spring.shardingsphere.datasource.master.type=org.apache.commons.dbcp.BasicDataSourcespring.shardingsphere.datasource.master.driver-class-name=com.mysql.jdbc.Driverspring.shardingsphere.datasource.master.url=jdbc:mysql://localhost:3306/masterspring.shardingsphere.datasource.master.username=rootspring.shardingsphere.datasource.master.password=spring.shardingsphere.datasource.slave0.type=org.apache.commons.dbcp.BasicDataSourcespring.shardingsphere.datasource.slave0.driver-class-name=com.mysql.jdbc.Driverspring.shardingsphere.datasource.slave0.url=jdbc:mysql://localhost:3306/slave0spring.shardingsphere.datasource.slave0.username=rootspring.shardingsphere.datasource.slave0.password=spring.shardingsphere.datasource.slave1.type=org.apache.commons.dbcp.BasicDataSourcespring.shardingsphere.datasource.slave1.driver-class-name=com.mysql.jdbc.Driverspring.shardingsphere.datasource.slave1.url=jdbc:mysql://localhost:3306/slave1spring.shardingsphere.datasource.slave1.username=rootspring.shardingsphere.datasource.slave1.password=spring.shardingsphere.masterslave.name=msspring.shardingsphere.masterslave.master-data-source-name=masterspring.shardingsphere.masterslave.slave-data-source-names=slave0,slave1spring.shardingsphere.props.sql.show=true

基于Spring boot + JNDI的规定配置

如果您打算应用Spring boot + JNDI的形式,在利用容器(如Tomcat)中应用Sharding-JDBC时,可应用spring.shardingsphere.datasource.${datasourceName}.jndiName来代替数据源的一系列配置。
如:

spring.shardingsphere.datasource.names=master,slave0,slave1spring.shardingsphere.datasource.master.jndi-name=java:comp/env/jdbc/masterspring.shardingsphere.datasource.slave0.jndi-name=jdbc/slave0spring.shardingsphere.datasource.slave1.jndi-name=jdbc/slave1spring.shardingsphere.masterslave.name=msspring.shardingsphere.masterslave.master-data-source-name=masterspring.shardingsphere.masterslave.slave-data-source-names=slave0,slave1spring.shardingsphere.props.sql.show=true

基于Spring命名空间的规定配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xmlns:master-slave="http://shardingsphere.apache.org/schema/shardingsphere/masterslave"     xsi:schemaLocation="http://www.springframework.org/schema/beans                         http://www.springframework.org/schema/beans/spring-beans.xsd                        http://shardingsphere.apache.org/schema/shardingsphere/masterslave                         http://shardingsphere.apache.org/schema/shardingsphere/masterslave/master-slave.xsd                         ">    <bean id="ds_master" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">        <property name="driverClassName" value="com.mysql.jdbc.Driver" />        <property name="url" value="jdbc:mysql://localhost:3306/ds_master" />        <property name="username" value="root" />        <property name="password" value="" />    </bean>    <bean id="ds_slave0" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">        <property name="driverClassName" value="com.mysql.jdbc.Driver" />        <property name="url" value="jdbc:mysql://localhost:3306/ds_slave0" />        <property name="username" value="root" />        <property name="password" value="" />    </bean>    <bean id="ds_slave1" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">        <property name="driverClassName" value="com.mysql.jdbc.Driver" />        <property name="url" value="jdbc:mysql://localhost:3306/ds_slave1" />        <property name="username" value="root" />        <property name="password" value="" />    </bean>        <master-slave:data-source id="masterSlaveDataSource" master-data-source-name="ds_master" slave-data-source-names="ds_slave0, ds_slave1" >        <master-slave:props>                <prop key="sql.show">true</prop>                <prop key="executor.size">10</prop>                <prop key="foo">bar</prop>            </master-slave:props>    </master-slave:data-source></beans>

在Spring中应用DataSource

间接通过注入的形式即可应用DataSource,或者将DataSource配置在JPA、Hibernate或MyBatis中应用。

@Resourceprivate DataSource dataSource;

更多的具体配置请参考配置手册。