pom.xml文件加入sharing引用和druid引用
<dependency> <groupId>com.dangdang</groupId> <artifactId>sharding-jdbc-core</artifactId> <version>1.5.4</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.12</version> </dependency> |
application-data.properties中配置数据库信息
spring.jpa.show-sql=true other.datasource.driver-class-name = com.mysql.jdbc.Driver TradeStationYear.datasource.driver-class-name = com.mysql.jdbc.Driver |
在application.properties中加data的配置
spring.profiles.active=data |
建domain
import java.io.Serializable; import javax.persistence.Column; import io.swagger.annotations.ApiModelProperty; @Entity /** @Id @Column(name = "card_id", length = 20) @Column(name = "trade_address", length = 10) @Column(name = "trade_date")
public TradeStationYear() { public String getTradeSN() { public void setTradeSN(String tradeSN) { public String getCardId() { public void setCardId(String cardId) { public String getStationAddress() { public void setStationAddress(String stationAddress) { public Date getTradeDate() { public void setTradeDate(Date tradeDate) { } |
repository类
public interface DataEntryRepositoryStationYear extends JpaRepository<TradeStationYear, Long> { Page<TradeStationYear> findAll(Specification<TradeStationYear> specification, Pageable pageable); } |
分库分表的配置
@Configuration // 数据库配置 @Autowired @Bean(TSSUtil.TRANSACTION_MANAGER_1) @Bean(TSSUtil.ENTITY_MANAGER_FACTORY_1) @Bean(TSSUtil.DATA_SOURCE_1) // 设置分库映射 //如果是两个数据库 /** dataSourceMap.put("ds_0", createDataSource()); */ //设置默认数据库 // 设置分表映射 /* // 设置分表映射 */
// 设置分表策略,按什么规则来分 //按这两个字段来分TSSUtil.COLUMN_OF_TABLE_SHARDING_1_1, TSSUtil.COLUMN_OF_TABLE_SHARDING_1_2 DataSource dataSource = null; return dataSource; private DataSource createDataSource() { |
两个条件的具体策略算法
import java.util.Calendar; import com.dangdang.ddframe.rdb.sharding.api.ShardingValue; public final class StationAndYearTableShardingAlgorithm implements MultipleKeysTableShardingAlgorithm { private String column_1 = "tradeaddress";// 字段1名,默认为tradeaddress,即交易地点 /** @Override Collection<String> result_1 = null; private Collection<String> doSharding(final ShardingValue<?> shardingValue){ private Collection<String> doEqualSharding4Date(Date value) { @SuppressWarnings("unchecked") private Collection<String> doInSharding4Date(Collection<Date> values) { @SuppressWarnings("unchecked") private Collection<String> doBetweenSharding4Date(Range<Date> range) { |
单个条件的具体分表策略
import java.util.Collection; import com.dangdang.ddframe.rdb.sharding.api.ShardingValue; public final class StationTableShardingAlgorithm implements SingleKeyTableShardingAlgorithm<String> { private String prefix = ""; @Override @Override @Override |
分表符串工具类
public static final String DATA_SOURCE_PREFIX = "dataSource"; // ***********************************第一个数据源********************************************************* public static final String LABEL_1 = "TradeStationYear";// 标签 } |
分表要自己创建表