package tools; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.jdbc.core.RowMapper; import tctable.Tools; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; public class DBTools { public static class JsonRowMapper implements RowMapper { @Override public String mapRow(ResultSet rs, int rowNum) throws SQLException { ObjectMapper objectMapper = new ObjectMapper(); Map resultMap = new HashMap<>(); // Получаем метаданные ResultSet для получения названий столбцов int columnCount = rs.getMetaData().getColumnCount(); for (int i = 1; i <= columnCount; i++) { String columnName = rs.getMetaData().getColumnName(i); Object columnValue = rs.getObject(i); resultMap.put(columnName, columnValue); } // Преобразовываем Map в JSON строку try { return objectMapper.writeValueAsString(resultMap); } catch (Exception e) { throw new RuntimeException("Failed to convert Map to JSON", e); } } } public static boolean hasColumn(ResultSet rs, String columnName) throws SQLException { ResultSetMetaData metaData = rs.getMetaData(); int columnCount = metaData.getColumnCount(); for (int i = 1; i <= columnCount; i++) { if (columnName.equalsIgnoreCase(metaData.getColumnName(i))) { return true; } } return false; } public static String getSQLValue(String t, String v) { //if($t=='object' && (strtoupper($v)!='NULL' && gettype($v)=='string')) $t='string'; //Если id шники uuid if (t.equals("object") || t.equals("uid")) { if (v.equals("")) v = "NULL"; } else if (t.equals("i4") || t.equals("integer")) { if (v.equals("")) v = "NULL"; } else if (t.equals("f8")) { if (v.equals("")) v = "NULL"; v = Tools.replaceAll(v,",", "."); //The decimal part: point. } else if (t.equals("f4")) { if (v.equals("")) v = "NULL"; v = Tools.replaceAll(v,",", "."); //The decimal part: point. } else if (t.equals("b")) { if (v.equals("")) v = "NULL"; else if (v.equals("1")) v = "true"; else if (v.equals("0")) v = "false"; } else if (t.equals("string") || t.equals("text") || t.equals("dateTime") || t.equals("date")) { if (v.equals("")) { v = "NULL"; } else { v = Tools.replaceAll(v,"'", "''"); v = "'" + v + "'"; } } else { v = "'" + v + "'"; } return v; } }