A construção de métodos que montam queries dinâmicas requerem certos artifícios para conseguir construir um bom resultado. Um desses artifícios é o método abaixo que construí uma vez, ele recebe a query como parâmetro e avalia se nela já consta a palavra "WHERE". Se não constar, o método retorna a palavra "WHERE" mas, se constar, significa que a query já possui a cláusula WHERE, logo ele retorna "AND" visando complementar a instrução SQL.
Abaixo, descrevo o método e um exemplo de uso.
Método
public String addConditionalConnector(String query){
if(query.indexOf("WHERE") == -1){
return " WHERE ";
} else {
return " AND ";
}
}
Exemplo de uso:
public List listar(Objeto objeto){
StringBuilder query = new StringBuilder();
query.append("SELECT * FROM TABELA");
/*faço mais coisas*/
query.append(addConditionalConnector(query.toString()));
/*faço mais coisas*/
query.append(addConditionalConnector(query.toString()));
/*faço mais coisas e executo a query*/
}
Com esse método auxiliar, eu não preciso mais me preocupar com a sintaxe da query em relação a minha cláusula WHERE com AND, porque o método já avalia o que é necessário.
Para quem não entende SQL, seguem links:
http://www.w3schools.com/sql/default.asp
http://www.w3schools.com/sql/sql_select.asp
http://www.w3schools.com/sql/sql_where.asp
http://www.w3schools.com/sql/sql_and_or.asp
Leia Mais ››
Abaixo, descrevo o método e um exemplo de uso.
Método
public String addConditionalConnector(String query){
if(query.indexOf("WHERE") == -1){
return " WHERE ";
} else {
return " AND ";
}
}
Exemplo de uso:
public List listar(Objeto objeto){
StringBuilder query = new StringBuilder();
query.append("SELECT * FROM TABELA");
/*faço mais coisas*/
query.append(addConditionalConnector(query.toString()));
/*faço mais coisas*/
query.append(addConditionalConnector(query.toString()));
/*faço mais coisas e executo a query*/
}
Com esse método auxiliar, eu não preciso mais me preocupar com a sintaxe da query em relação a minha cláusula WHERE com AND, porque o método já avalia o que é necessário.
Para quem não entende SQL, seguem links:
http://www.w3schools.com/sql/default.asp
http://www.w3schools.com/sql/sql_select.asp
http://www.w3schools.com/sql/sql_where.asp
http://www.w3schools.com/sql/sql_and_or.asp