Ejemplo n.º 1
0
 /**
  * 根据表的字段名 获取分库分表选择的数据库
  *
  * @param datasourceSchema
  * @param tableNameBean
  * @return
  */
 public DatabaseSchema getShardDataSoure(
     DatasourceSchema datasourceSchema, TableNameBean tableNameBean) {
   Map<String, DatabaseSchema> map = datasourceSchema.getMap();
   List<DatabaseSchema> dataBaseSchemas = new ArrayList<DatabaseSchema>();
   String tablename = "";
   Boolean flag = false;
   for (String key : map.keySet()) { // 找出跳出循环
     List<TableSchema> tableSchemas = map.get(key).getTableSchemas();
     for (TableSchema tableSchema : tableSchemas) {
       if (tableSchema.getTablefield().equals(tableNameBean.getTablefield())) {
         tablename = tableSchema.getTablename();
         flag = true;
         break;
       }
     }
     if (flag) {
       break;
     }
   }
   Map<String, Set<String>> tablenameMapingDatasources =
       datasourceSchema.collectTablenameMapingDatasource();
   Set<String> databases = tablenameMapingDatasources.get(tablename);
   for (String database : databases) {
     dataBaseSchemas.add(datasourceSchema.getMap().get(database));
   }
   // DatabaseShard baseSchemaHashShard=new DatabaseShard();
   // return baseSchemaHashShard.getShardInfo(tableNameBean.getTablefieldvalue());
   return loadBalance.select(dataBaseSchemas, tableNameBean.getTablefieldvalue());
 }