package com.company.shardingjdbc.configuration;
import com.alibaba.druid.pool.DruidDataSource;
import com.company.shardingjdbc.common.ModuleDatabaseShardingAlgorithm;
import com.company.shardingjdbc.common.ModuleTableShardingAlgorithm;
import com.dangdang.ddframe.rdb.sharding.api.ShardingDataSourceFactory;
import com.dangdang.ddframe.rdb.sharding.api.rule.DataSourceRule;
import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule;
import com.dangdang.ddframe.rdb.sharding.api.rule.TableRule;
import com.dangdang.ddframe.rdb.sharding.api.strategy.database.DatabaseShardingStrategy;
import com.dangdang.ddframe.rdb.sharding.api.strategy.table.TableShardingStrategy;
import com.dangdang.ddframe.rdb.sharding.keygen.DefaultKeyGenerator;
import com.dangdang.ddframe.rdb.sharding.keygen.KeyGenerator;
import com.mysql.jdbc.Driver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class DataSourceConfiguration {
@Bean
public DataSource getDataSource() throws SQLException {
return buildDataSource();
}
private DataSource buildDataSource() throws SQLException {
//设置分库映射
Map<String, DataSource> dataSourceMap = new HashMap<>(2);
//添加两个数据库ds_0,ds_1到map里
dataSourceMap.put("db0", createDataSource("db0"));
dataSourceMap.put("db1", createDataSource("db1"));
//设置默认db为ds_0,也就是为那些没有配置分库分表策略的指定的默认库
//如果只有一个库,也就是不需要分库的话,map里只放一个映射就行了,只有一个库时不需要指定默认库,但2个及以上时必须指定默认库,否则那些没有配置策略的表将无法操作数据
DataSourceRule dataSourceRule = new DataSourceRule(dataSourceMap, "db0");
//设置分表映射,将t_order_0和t_order_1两个实际的表映射到t_order逻辑表
//0和1两个表是真实的表,t_order是个虚拟不存在的表,只是供使用。如查询所有数据就是select * from t_order就能查完0和1表的
TableRule orderTableRule = TableRule.builder("t_order")
.actualTables(Arrays.asList("t_order_0", "t_order_1"))
.dataSourceRule(dataSourceRule)
.build();
//具体分库分表策略,按什么规则来分
ShardingRule shardingRule = ShardingRule.builder()
.dataSourceRule(dataSourceRule)
.tableRules(Arrays.asList(orderTableRule))
.databaseShardingStrategy(new DatabaseShardingStrategy("user_id", new ModuleDatabaseShardingAlgorithm()))
.tableShardingStrategy(new TableShardingStrategy("order_id", new ModuleTableShardingAlgorithm())).build();
DataSource dataSource = ShardingDataSourceFactory.createDataSource(shardingRule);
return dataSource;
}
private static DataSource createDataSource(final String dataSourceName) {
//使用druid连接数据库
DruidDataSource result = new DruidDataSource();
result.setDriverClassName(Driver.class.getName());
result.setUrl(String.format("jdbc:mysql://localhost:3306/%s", dataSourceName));
result.setUsername("root");
result.setPassword("root123");
return result;
}
@Bean
public KeyGenerator keyGenerator() {
return new DefaultKeyGenerator();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Springboot2+JPA|MyBatis+Sharding-JDBC示例
共119个文件
xml:93个
java:9个
class:9个
4星 · 超过85%的资源 需积分: 50 204 下载量 82 浏览量
2018-07-24
13:52:36
上传
评论
收藏 125KB ZIP 举报
温馨提示
Springboot2+JPA|MyBatis+Sharding-JDBC示例源码,可直接运行。
资源推荐
资源详情
资源评论
收起资源包目录
Springboot2+JPA|MyBatis+Sharding-JDBC示例 (119个子文件)
DataSourceConfiguration.class 5KB
OrderController.class 4KB
ModuleDatabaseShardingAlgorithm.class 4KB
ModuleTableShardingAlgorithm.class 3KB
Order.class 2KB
ShardingJdbcApplication.class 842B
ShardingJdbcApplicationTests.class 662B
OrderMapper.class 487B
OrderRepository.class 355B
mvnw.cmd 5KB
.gitignore 268B
sharding-jdbc.iml 10KB
maven-wrapper.jar 46KB
DataSourceConfiguration.java 4KB
ModuleTableShardingAlgorithm.java 3KB
ModuleDatabaseShardingAlgorithm.java 3KB
OrderController.java 2KB
ShardingJdbcApplication.java 437B
ShardingJdbcApplicationTests.java 356B
OrderMapper.java 296B
Order.java 281B
OrderRepository.java 226B
mvnw 6KB
maven-wrapper.properties 110B
workspace.xml 33KB
uiDesigner.xml 9KB
pom.xml 3KB
Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_0_3_RELEASE.xml 757B
Maven__org_springframework_boot_spring_boot_starter_data_jpa_2_0_3_RELEASE.xml 743B
Maven__org_springframework_boot_spring_boot_starter_logging_2_0_3_RELEASE.xml 736B
Maven__org_springframework_boot_spring_boot_starter_tomcat_2_0_3_RELEASE.xml 729B
Maven__org_springframework_boot_spring_boot_autoconfigure_2_0_3_RELEASE.xml 722B
Maven__org_hibernate_common_hibernate_commons_annotations_5_0_1_Final.xml 720B
Maven__org_mybatis_spring_boot_mybatis_spring_boot_autoconfigure_1_3_2.xml 718B
Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_6.xml 717B
Maven__org_springframework_boot_spring_boot_starter_json_2_0_3_RELEASE.xml 715B
Maven__org_springframework_boot_spring_boot_starter_test_2_0_3_RELEASE.xml 715B
Maven__org_springframework_boot_spring_boot_starter_jdbc_2_0_3_RELEASE.xml 715B
Maven__org_hibernate_javax_persistence_hibernate_jpa_2_1_api_1_0_2_Final.xml 708B
Maven__org_springframework_boot_spring_boot_starter_aop_2_0_3_RELEASE.xml 708B
Maven__org_springframework_boot_spring_boot_starter_web_2_0_3_RELEASE.xml 708B
Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 688B
Maven__org_springframework_boot_spring_boot_starter_2_0_3_RELEASE.xml 680B
Maven__org_springframework_data_spring_data_commons_2_0_8_RELEASE.xml 680B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_6.xml 676B
Maven__org_mybatis_spring_boot_mybatis_spring_boot_starter_1_3_2.xml 676B
Maven__org_hibernate_validator_hibernate_validator_6_0_10_Final.xml 669B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_6.xml 662B
Maven__org_springframework_boot_spring_boot_test_2_0_3_RELEASE.xml 659B
Maven__org_springframework_data_spring_data_jpa_2_0_8_RELEASE.xml 652B
Maven__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_31.xml 648B
Maven__org_springframework_spring_expression_5_0_7_RELEASE.xml 646B
compiler.xml 638B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml 632B
OrderMapper.xml 630B
OrderMapper.xml 630B
Maven__org_springframework_spring_aspects_5_0_7_RELEASE.xml 625B
Maven__org_springframework_spring_context_5_0_7_RELEASE.xml 625B
Maven__org_springframework_boot_spring_boot_2_0_3_RELEASE.xml 624B
Maven__org_springframework_spring_webmvc_5_0_7_RELEASE.xml 618B
Maven__org_apache_tomcat_embed_tomcat_embed_core_8_5_31.xml 613B
Maven__com_fasterxml_jackson_core_jackson_databind_2_9_6.xml 611B
Maven__org_springframework_spring_beans_5_0_7_RELEASE.xml 611B
Maven__org_springframework_spring_core_5_0_7_RELEASE.xml 604B
Maven__org_springframework_spring_test_5_0_7_RELEASE.xml 604B
Maven__org_springframework_spring_jdbc_5_0_7_RELEASE.xml 604B
Maven__org_apache_tomcat_embed_tomcat_embed_el_8_5_31.xml 599B
Maven__javax_annotation_javax_annotation_api_1_3_2.xml 599B
Maven__javax_validation_validation_api_2_0_1_Final.xml 599B
Maven__org_springframework_spring_orm_5_0_7_RELEASE.xml 597B
Maven__org_springframework_spring_aop_5_0_7_RELEASE.xml 597B
Maven__org_springframework_spring_jcl_5_0_7_RELEASE.xml 597B
Maven__org_springframework_spring_web_5_0_7_RELEASE.xml 597B
Maven__org_apache_logging_log4j_log4j_to_slf4j_2_10_0.xml 596B
Maven__javax_transaction_javax_transaction_api_1_2.xml 596B
Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml 596B
Maven__org_hibernate_hibernate_core_5_2_17_Final.xml 594B
Maven__org_springframework_spring_tx_5_0_7_RELEASE.xml 590B
Maven__com_fasterxml_jackson_core_jackson_core_2_9_6.xml 583B
Maven__com_dangdang_sharding_jdbc_core_1_5_4.xml 569B
Maven__net_bytebuddy_byte_buddy_agent_1_7_11.xml 566B
Maven__mysql_mysql_connector_java_5_1_41.xml 562B
Maven__org_apache_logging_log4j_log4j_api_2_10_0.xml 561B
Maven__ch_qos_logback_logback_classic_1_2_3.xml 556B
Maven__org_hamcrest_hamcrest_library_1_3.xml 541B
Maven__org_javassist_javassist_3_22_0_GA.xml 538B
Maven__org_mybatis_mybatis_spring_1_3_2.xml 537B
Maven__org_aspectj_aspectjweaver_1_8_13.xml 537B
Maven__ch_qos_logback_logback_core_1_2_3.xml 535B
Maven__com_jayway_jsonpath_json_path_2_4_0.xml 534B
Maven__org_mockito_mockito_core_2_15_0.xml 530B
Maven__net_minidev_accessors_smart_1_2.xml 530B
Maven__org_skyscreamer_jsonassert_1_5_0.xml 525B
Maven__net_bytebuddy_byte_buddy_1_7_11.xml 524B
Maven__org_xmlunit_xmlunit_core_2_5_1.xml 523B
Maven__org_assertj_assertj_core_3_9_1.xml 523B
Maven__org_slf4j_jul_to_slf4j_1_7_25.xml 522B
Maven__org_hamcrest_hamcrest_core_1_3.xml 520B
Maven__org_projectlombok_lombok_1_16_22.xml 519B
Maven__org_jboss_jandex_2_0_3_Final.xml 515B
共 119 条
- 1
- 2
资源评论
- weixin_382853772018-08-23学习中,多少都有些作用
- IT宇2019-03-14学习中,多少都有些作用
- 雕_零2019-09-18学习中,多少都有些作用
- gundam060332020-02-17还可以,参考下
- go_56565662019-05-28还行吧....................
风流少年
- 粉丝: 4w+
- 资源: 27
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功