Guariento 1 Denunciar post Postado Maio 7, 2014 Prezados, qual seria a melhor maneira de se escrever uma grande query SQL dentro do código Java sem ter de ficarmos abrindo e fechando aspas concatenando os pedaços da query? Exemplo: // monta query String sql = "SELECT " + " c.cvCodCdc, " + " c.ccNomCdc " + "FROM " + " tblCdc c " + " LEFT JOIN ( " + " SELECT " + " f.cvCodCdc " + " FROM " + " tblFuncionario f " + " WHERE " + " f.cdDatRes IS NULL " + " GROUP BY " + " f.cvCodCdc " + " ) z ON " + " c.cvCodCdc = z.cvCodCdc " + "WHERE " + " z.cvCodCdc IS NOT NULL " + "ORDER BY " + " c.ccNomCdc"; ... como podem ver no código acima, só não vale dizer que a resposta é assim: "SELECT c.cvCodCdc, c.ccNomCdc FROM tblCdc c LEFT JOIN ( ....". O interessante é manter as quebras de linha da query para não dificultar a leitura, ao mesmo tempo evitar as várias aspas e concatenações do código Java. Compartilhar este post Link para o post Compartilhar em outros sites
Vergil 15 Denunciar post Postado Maio 14, 2014 Se você não estiver utilizando um framework ORM, não podendo assim utilizar Criteria, recomendo que separe o SQL do código Java. Crie um arquivo SQL e ponha sua query nele. Cria-se o arquivo SQL dentro do projeto com a query e depois lê o arquivo do seu código Java jogando seu conteúdo numa String. SELECT * FROM minha_tabela INNER JOIN ... WHERE xpto = ? No código Java. // .. private String recuperaSql(String arquivo) { InputStream stream = MinhaClasse.class.getClassLoader().getResourceAsStream(arquivo); if (stream == null) { throw new Exception("Não foi possível recuperar o recurso '" + arquivo + "' no sistema."); } try { String sql = IOUtils.toString(stream); stream.close(); return sql; } catch (IOException ex) { throw new Exception(ex); } } // ... String sql = recuperaSql("/caminho/para/o/arquivo/sql"); Connection conn = recuperaConexaoBanco(); PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, parametroConsulta); ResultSet rs = ps.executeQuery(); // ... A documentação da biblioteca utilizada para leitura do arquivo SQL pode ser consultada em http://commons.apache.org/proper/commons-io/apidocs/ , porém nem é necessário dizer que tu podes ler o arquivo de qualquer outra maneira que quiser. Compartilhar este post Link para o post Compartilhar em outros sites