Spring + jdbcTemplate: ajustar query para parametros dinamicos

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???

[code]public List 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; 

}[/code]

Alguem???

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.

Obrigada guilhermeadc!