From 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a Mon Sep 17 00:00:00 2001 From: xiejun <xiejun@vci-tech.com> Date: 星期五, 01 十一月 2024 15:11:19 +0800 Subject: [PATCH] Revert "集成获取mdm分发通用数据格式接口集成" --- Source/BladeX-Tool/blade-starter-tenant/src/main/java/org/springblade/core/tenant/dynamic/TenantDataSourceJdbcProvider.java | 91 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 91 insertions(+), 0 deletions(-) diff --git a/Source/BladeX-Tool/blade-starter-tenant/src/main/java/org/springblade/core/tenant/dynamic/TenantDataSourceJdbcProvider.java b/Source/BladeX-Tool/blade-starter-tenant/src/main/java/org/springblade/core/tenant/dynamic/TenantDataSourceJdbcProvider.java new file mode 100644 index 0000000..af165ee --- /dev/null +++ b/Source/BladeX-Tool/blade-starter-tenant/src/main/java/org/springblade/core/tenant/dynamic/TenantDataSourceJdbcProvider.java @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 搴勯獮 (smallchill@163.com) + */ +package org.springblade.core.tenant.dynamic; + +import com.baomidou.dynamic.datasource.provider.AbstractJdbcDataSourceProvider; +import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty; +import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties; +import org.springblade.core.tool.utils.StringUtil; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.HashMap; +import java.util.Map; + +import static org.springblade.core.tenant.constant.TenantBaseConstant.TENANT_DATASOURCE_GROUP_STATEMENT; + +/** + * 绉熸埛鏁版嵁婧愬垵濮嬪姞杞� + * + * @author Chill + */ +public class TenantDataSourceJdbcProvider extends AbstractJdbcDataSourceProvider { + + private final String driverClassName; + private final String url; + private final String username; + private final String password; + private final DynamicDataSourceProperties dynamicDataSourceProperties; + + public TenantDataSourceJdbcProvider(DynamicDataSourceProperties dynamicDataSourceProperties, String driverClassName, String url, String username, String password) { + super(driverClassName, url, username, password); + this.dynamicDataSourceProperties = dynamicDataSourceProperties; + this.driverClassName = driverClassName; + this.url = url; + this.username = username; + this.password = password; + } + + @Override + protected Map<String, DataSourceProperty> executeStmt(Statement statement) throws SQLException { + // 鏋勫缓鏁版嵁婧愰泦鍚� + Map<String, DataSourceProperty> map = new HashMap<>(16); + // 鏋勫缓涓绘暟鎹簮 + DataSourceProperty masterProperty = new DataSourceProperty(); + masterProperty.setDriverClassName(driverClassName); + masterProperty.setUrl(url); + masterProperty.setUsername(username); + masterProperty.setPassword(password); + masterProperty.setDruid(dynamicDataSourceProperties.getDruid()); + map.put(dynamicDataSourceProperties.getPrimary(), masterProperty); + // 鏋勫缓yml鏁版嵁婧� + Map<String, DataSourceProperty> datasource = dynamicDataSourceProperties.getDatasource(); + if (datasource.size() > 0) { + map.putAll(datasource); + } + // 鏋勫缓鍔ㄦ�佹暟鎹簮 + ResultSet rs = statement.executeQuery(TENANT_DATASOURCE_GROUP_STATEMENT); + while (rs.next()) { + String tenantId = rs.getString("tenantId"); + String driver = rs.getString("driverClass"); + String url = rs.getString("url"); + String username = rs.getString("username"); + String password = rs.getString("password"); + if (StringUtil.isNoneBlank(tenantId, driver, url, username, password)) { + DataSourceProperty jdbcProperty = new DataSourceProperty(); + jdbcProperty.setDriverClassName(driver); + jdbcProperty.setUrl(url); + jdbcProperty.setUsername(username); + jdbcProperty.setPassword(password); + jdbcProperty.setDruid(dynamicDataSourceProperties.getDruid()); + map.put(tenantId, jdbcProperty); + } + } + return map; + } +} -- Gitblit v1.9.3