ShardingJDBC的基本配置和使用
阿新 • • 發佈:2020-04-06
**原創不易,如需轉載,請註明出處[https://www.cnblogs.com/baixianlong/p/12644027.html](https://www.cnblogs.com/baixianlong/p/12644027.html),希望大家多多支援!!!**
# 一、ShardingSphere介紹
ShardingSphere是一套開源的分散式資料庫中介軟體解決方案組成的生態圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(計劃中)這3款相互獨立的產品組成。 他們均提供標準化的資料分片、分散式事務和資料庫治理功能,可適用於如Java同構、異構語言、雲原生等各種多樣化的應用場景。詳細一點的介紹直接看官網:[https://shardingsphere.apache.org/document/current/cn/overview/](https://shardingsphere.apache.org/document/current/cn/overview/)
![s1.png](https://i.loli.net/2020/03/17/2PNMCvTwZEOF5pG.png)
本章我們主要探討如何整合ShardingJDBC, 它使用客戶端直連資料庫,以jar包形式提供服務,無需額外部署和依賴,可理解為增強版的JDBC驅動,完全相容JDBC和各種ORM框架。特點如下:
* 適用於任何基於JDBC的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。
* 支援任何第三方的資料庫連線池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。
* 支援任意實現JDBC規範的資料庫。目前支援MySQL,Oracle,SQLServer,PostgreSQL以及任何遵循SQL92標準的資料庫。
# 二、Springboot整合ShardingJDBC
## 方式一:基於配置檔案整合,方便簡單但是不夠靈活,這種方式直接看程式碼:[https://github.com/xianlongbai/sharding-jdbc-boot-demo](https://github.com/xianlongbai/sharding-jdbc-boot-demo)
## 方式二:這裡我們主要基於java config的方式來整合到springboot中,更適合學習和理解。直接上程式碼:
//相關依賴
---
//資料來源、分庫分表總體配置
@Configuration
@MapperScan(basePackages = "com.bxl.dao.shardingDao", sqlSessionTemplateRef = "shardingSqlSessionTemplate")
public class ShardingDataSourceConfig {
private static final Logger logger = LoggerFactory.getLogger(ShardingDataSourceConfig.class);
//這裡直接注入你專案中配置的資料來源
@Resource
private DataSource dataSourceOne;
@Resource
private DataSource dataSourceTwo;
//註釋掉的先不用看,後邊會介紹
@Bean(name = "shardingDataSource")
public DataSource dataSource() throws SQLException {
TransactionTypeHolder.set(TransactionType.LOCAL);
//1、指定需要分庫分表的資料來源