これは私のコードです。プログラムの行数を減らす方法があるかどうかを知る必要があります。条件のメソッド呼び出しで多くのifステートメントを持つコード行を減らすには、より良い方法が必要です
if文にはメソッド呼び出しが含まれているため、それらを置き換えるためにenumを使用することはできません。あなたのコードで
public class AgreementQueryBuilder { @SuppressWarnings("unchecked") public static String searchQueryBuilder(FetchAgreementsModel agreementsModel, @SuppressWarnings("rawtypes") List obj) { StringBuilder selectQuery = new StringBuilder( "select *,e.id as agreementid from eglams_agreement e left outer join eglams_rentincrementtype t on e.rent_increment_method=t.id where"); // if statement to check the arguments and build the where criteria if (agreementsModel.getAgreementId() != null || agreementsModel.getAgreementNumber() != null || agreementsModel.getStatus() != null || agreementsModel.getTenantId() != null || (agreementsModel.getFromDate() != null && agreementsModel.getToDate() != null) || agreementsModel.getTenderNumber() != null || agreementsModel.getTinNumber() != null || agreementsModel.getTradeLicense_number() != null) return null; boolean isAllFieldsNull = true; if (agreementsModel.getAgreementId() != null) { if (isAllFieldsNull == true) { selectQuery.append(" e.id=?"); isAllFieldsNull = false; obj.add(agreementsModel.getAgreementId()); } } if (agreementsModel.getAgreementNumber() != null) { if (isAllFieldsNull == true) { selectQuery.append(" e.agreement_number=?"); isAllFieldsNull = false; } else selectQuery.append(" and e.agreement_number=?"); obj.add(agreementsModel.getAgreementNumber()); } if (agreementsModel.getStatus() != null) { if (isAllFieldsNull == true) { selectQuery.append(" e.status=?"); isAllFieldsNull = false; } else selectQuery.append(" and e.status=?"); obj.add(agreementsModel.getStatus()); } if (agreementsModel.getTenantId() != null) { if (isAllFieldsNull == true) { selectQuery.append(" e.tenant_id=?"); isAllFieldsNull = false; } else selectQuery.append(" and e.tenant_id=?"); obj.add(agreementsModel.getTenantId()); } if (agreementsModel.getTenderNumber() != null) { if (isAllFieldsNull == true) { selectQuery.append(" e.tender_number=?"); isAllFieldsNull = false; } else selectQuery.append(" and e.tender_number=?"); obj.add(agreementsModel.getTenderNumber()); } if (agreementsModel.getTinNumber() != null) { if (isAllFieldsNull == true) { selectQuery.append(" e.tin_number=?"); isAllFieldsNull = false; } else selectQuery.append(" and e.tin_number=?"); obj.add(agreementsModel.getTinNumber()); } if (agreementsModel.getTradeLicense_number() != null) { if (isAllFieldsNull == true) { selectQuery.append(" e.TradeLicense_number=?"); isAllFieldsNull = false; } else selectQuery.append(" and e.TradeLicense_number=?"); obj.add(agreementsModel.getTradeLicense_number()); } if (agreementsModel.getFromDate() != null) { if (agreementsModel.getToDate() != null) { if (isAllFieldsNull == true) { selectQuery.append(" t.FromDate=?"); isAllFieldsNull = false; } else selectQuery.append(" and t.FromDate=?"); obj.add(agreementsModel.getFromDate()); selectQuery.append(" and t.ToDate=?"); obj.add(agreementsModel.getToDate()); } } System.err.println(selectQuery); return selectQuery.toString(); } }
ようこそスタックオーバーフロー!あなたのコードは現在動作しているようですが、あなたはそれを改善しようとしています。一般的に、これらの質問はこのサイトでは強すぎますが、[CodeReview.SE](// codereview.stackexchange.com/tour)のほうが良いかもしれません。このサイトよりも少し厳密であるため、[必要条件](// codereview.stackexchange.com/help/on-topic)を必ずお読みください。 – 4castle
すべてのwhere句をリストに入れます。それらを ''と ''と最後に結びつけてください。 –