import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
import org.apache.shardingsphere.infra.context.runtime.RuntimeContext;
import org.apache.shardingsphere.infra.database.DefaultSchema;
import org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine;
import org.apache.shardingsphere.infra.metadata.model.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.optimize.context.OptimizerContext;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.metadata.MetaDataContextsBuilder;
import org.apache.shardingsphere.transaction.context.TransactionContexts;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@Service
public class ShardingSphereService {
@Resource
private DataSource dataSource;
public void insertMultiThread(int threadCount, int batchSize, final String sql) {
// 构建ShardingSphere相关上下文
Map<String, ShardingSphereMetaData> metaDataMap = new HashMap<>();
metaDataMap.put("ds_0", new ShardingSphereMetaData("ds_0", dataSource.getSchema(), dataSource.getSchema().getConfig()));
MetaDataContexts metaDataContexts = new MetaDataContextsBuilder(
Collections.singletonMap("sharding_db", metaDataMap),
Collections.emptyMap(),
new ConfigurationProperties(new Properties()),
dataSource.getShardingRule()).build();
// 构建执行引擎
ExecutorEngine executorEngine = new ExecutorEngine(metaDataContexts.getMetaData(DefaultSchema.LOGIC_NAME).getResource().getExecutorEngine());
// 构建事务上下文
TransactionContexts transactionContexts = new TransactionContexts(metaDataContexts.getMetaDataMap(), new TransactionContextsBuilder(metaDataContexts, executorEngine).build());
// 构建运行时上下文
RuntimeContext runtimeContext = new RuntimeContext(metaDataContexts, transactionContexts, executorEngine,
评论已关闭