我正在寫一個查詢從數據庫搜索記錄。我將3個值傳遞給該方法。我想以這樣的方式編寫我的查詢,使得該列的條件被附加到查詢中,該查詢的傳遞的相應值非空。如果有其他陳述,我已經結束了。有沒有辦法優化它?優化,如果-else語句
if (StringUtils.isNotEmpty(projectId)) {
sql.append(" UPPER(CIRC.PROJECT_ID) like ?");
}
if (StringUtils.isNotEmpty(circuitId)) {
if (StringUtils.isNotEmpty(projectId)) {
sql.append(" AND");
}
sql.append(" UPPER(CIRC.CIRCUIT_ID) like ?");
}
if (StringUtils.isNotEmpty(orderRef)) {
if (StringUtils.isNotEmpty(projectId) || StringUtils.isNotEmpty(circuitId)) {
sql.append(" AND");
}
sql.append(" UPPER(CIRC.ORDERID) like ?");
}
JSONArray jsonArray = new JSONArray();
ResultSet rs = null;
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
PreparedStatement ps = null;
try {
if (connection != null) {
ps = connection.prepareStatement(sql.toString());
if (StringUtils.isNotEmpty(projectId)) {
ps.setString(1, "%" + projectId.toUpperCase() + "%");
}
if (StringUtils.isNotEmpty(circuitId)) {
if (StringUtils.isEmpty(projectId)) {
ps.setString(1, "%" + circuitId.toUpperCase() + "%");
} else {
ps.setString(2, "%" + circuitId.toUpperCase() + "%");
}
}
if (StringUtils.isNotEmpty(orderRef)) {
if (StringUtils.isEmpty(projectId) && StringUtils.isEmpty(circuitId)) {
ps.setString(1, "%" + orderRef.toUpperCase() + "%");
} else if (StringUtils.isEmpty(projectId) || StringUtils.isEmpty(circuitId)) {
ps.setString(2, "%" + orderRef.toUpperCase() + "%");
} else {
ps.setString(3, "%" + orderRef.toUpperCase() + "%");
}
}
注意:這個問題不是orm/jdbc的主題。也請忽略硬編碼。
「messy if else statements。有沒有辦法優化它。」第1步:格式化您的代碼。現在只是混亂而不完整。 –
[codereview.stackexchange.com](http://codereview.stackexchange.com/) – Blobonat
@AndyTurner我認爲完整的代碼是無關question.I已格式化的代碼。 –