Динамический c запрос на обновление нескольких столбцов с использованием пружины MVC - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть данные JSON, как показано ниже:

{
    "table" : "customer",
    "uniqueColumn" : "customer",
    "uniqueColVal" : "cust_786",
    "columns" : 
    [{
        "column_1" : "column_1 Val",
        "column_2" : "column_2 Val",
        "column_..." : "column_... Val",
        "column_..." : "column_... Val",
        "column_..." : "column_... Val",
        "column_n" : "column_n Val"
    }]
}

Мне нужно выполнить запрос, и он должен быть в форме ниже

UPDATE customer SET column_1 = 'column_1 Val', column_2 = 'column_2 Val', column_... = 'column_... Val', column_n = 'column_n Val' WHERE customer = 'cust_786';

Я использую Spring MVC для обработки этого и кода, который я написал, выглядит следующим образом. Это не неполно.

@Override
public Map<String, Object> updateTabColumnValues(Map<String, Object> data)
{
    Map<String, Object> response = new HashMap();
    try 
    {
        String table= data.get("table").toString();
        String uniqueid = data.get("uniqueid").toString();

        if (table!=null && uniqueid !=null)
        {
            String column = null, columnVal = null, updateColumn = null, updateColumnVal = null;
            JSONObject jsonObj = new JSONObject(data);
            JSONArray columnsToUpdate = jsonObj.getJSONArray("columns");
            for (int i = 0; i < columnsToUpdate.length(); i++)
            {
                if (i == columnsToUpdate.length() - 1)
                {
                    JSONObject json_Obj = columnsToUpdate.getJSONObject(i);
                    column = json_Obj.keys().next().toString();
                    columnVal = json_Obj.getString(column).toString();
                    updateColumn = updateColumn + column.toString();
                    updateColumnVal = updateColumnVal + " = " + columnVal.toString() + "'";
                }
            }
            System.out.println("UPDATE " + table+ " SET " + updateColumn +" = " + updateColumnVal + " WHERE " + data.get("uniqueColumn").toString() +" = '" + data.get("uniqueColVal").toString() +"';");
        }
        else
        {
            response.put("status", false);
            LOGGER.info("Failed to get table>>> " + table+ " OR uniqueid >>> " + uniqueid);
        }
    } 
    catch (Exception e) 
    {
        response.put("status", false);
        LOGGER.error("Error @editLayerAttributeByUniqueID ", e);
        System.err.println("Error @editLayerAttributeByUniqueID " + e);         
    }
    return response;
}

Было бы очень полезно, если бы кто-то мог помочь мне здесь. Заранее спасибо.

...