Spring + jdbcTemplate: ajustar query para parametros dinamicos

3 respostas
I

Olá Pessoal!

Estou trabalhando com spring e jdbcTemplate para querys. A query abaixo esta ok.

Porém preciso fazer um ajuste, os parametros (Long numCnpj, Long complCnpj) tem que ser dinamicos .... ou seja pode vir os 2 preenchidos ou numCnpj ou complCnpj.

Alguem pode ajudar????

public List<Proponente> findTeste(Long numCnpj, Long complCnpj) { 
               
        String query = "select num_cnpj, nom_razao_social from PROPONENTE where num_cnpj = ? and num_cnpj_complemento = ?";

        List<Proponente> list = this.jdbcTemplate.query(
                query,
                new Object[]{numCnpj,complCnpj},
                new RowMapper() {
                    public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
                        Proponente p = new Proponente();
                        p.setRazaoSocial(rs.getString("nom_razao_social"));
                        p.setCnpj(rs.getLong("num_cnpj"));
                        return p;
                    }
                }
            );
        
        return list; 
   }

3 Respostas

I

Alguem???

G

Izaura,

Você poderia modificar a montagem da query para verificar se o parâmetro foi devidamente informado na consulta. Caso o parâmetro seja nulo, a condição correspondente será desconsiderada. O código ficaria parecido com o seguinte:

MapSqlParameterSource paramSource = new MapSqlParameterSource();
 paramSource.addValue("num_cnpj", num_cnpj);
 paramSource.addValue("num_cnpj_complemento", num_cnpj_complemento);
 jdbcTemplate.queryForRowSet("select num_cnpj, nom_razao_social from PROPONENTE where " + 
         "(:num_cnpj is null OR num_cnpj = :num_cnpj) and " + "
         "(:num_cnpj_complemento is null OR num_cnpj_complemento = :num_cnpj_complemento)", paramSource);

Alguma adequação pode ser necessária para tratar os parâmetros não informado como string vazias ou valores nulos na query.

I

Obrigada guilhermeadc!

Criado 29 de janeiro de 2014
Ultima resposta 3 de fev. de 2014
Respostas 3
Participantes 2