簡體   English   中英

Java if語句

[英]Java if-statement

public void searchKlijenta(KlijentiFormEvent klijentiFormEvent) throws SQLException {

    String nazivK = klijentiFormEvent.getNaziv();
    String adresaK = klijentiFormEvent.getAdresa();
    String gradK = klijentiFormEvent.getGrad();
    String drzavaK = klijentiFormEvent.getDrzava();
    String telefonK = klijentiFormEvent.getTelefon();
    String faxK = klijentiFormEvent.getFax();
    String mailK = klijentiFormEvent.getMail();
    String mobitelK = klijentiFormEvent.getMobitel();
    String oibK = klijentiFormEvent.getOib();
    String ugovorK = klijentiFormEvent.getUgovor();
    String osobaK = klijentiFormEvent.getOsoba();

    if (nazivK.length() == 0) 
        nazivK = null;
    if (adresaK.length() == 0) 
        adresaK = null;
    if (gradK.length() == 0) 
        gradK = null;
    if (drzavaK.length() == 0) 
        drzavaK = null;
    if (telefonK.length() == 0) 
        telefonK = null;
    if (faxK.length() == 0) 
        faxK = null;
    if (mailK.length() == 0) 
        mailK = null;
    if (mobitelK.length() == 0) 
        mobitelK = null;
    if (oibK.length() == 0) 
        oibK = null;
    if (ugovorK.length() == 0) 
        ugovorK = null;
    if (osobaK.length() == 0) 
        osobaK = null;


    klijentiSearchModel.clear();

    String sql = "select * from zavrsni.klijenti where naziv like '"+nazivK+"' or adresa like '"+adresaK+"' or grad like '"+gradK+"' or drzava like '"+drzavaK+"' or telefon like '"+telefonK+"' or fax like '"+faxK+"' or mail like '"+mailK+"' or mobitel like '"+mobitelK+"' or oib like '"+oibK+"' or ugovor like '"+ugovorK+"' or osoba like '"+osobaK+"' ";
    Statement selectStmt = con.createStatement();
    ResultSet result = selectStmt.executeQuery(sql);

    while(result.next()) {
        int id = result.getInt("id");
        String naziv = result.getString("naziv");
        String adresa = result.getString("adresa");
        String grad = result.getString("grad");
        int posBr = result.getInt("posBr");
        String drzava = result.getString("drzava");
        String telefon = result.getString("telefon");
        String fax = result.getString("fax");
        String mail = result.getString("mail");
        String mobitel = result.getString("mobitel");
        String oib = result.getString("oib");
        String ugovor = result.getString("ugovor");
        String osoba = result.getString("osoba");

        KlijentiModelSearch klijentSearch = new KlijentiModelSearch(id, naziv, adresa, grad, posBr, drzava, telefon, fax, mail, mobitel, oib, ugovor, osoba);
        klijentiSearchModel.add(klijentSearch);
    }

    result.close();
    selectStmt.close();

}

我可以寫這段代碼嗎? 我想到“如果”的陳述?

也許通過一段時間循環?

用於搜索數據庫中某個客戶端的方法。 這個方法起作用,但這個if語句我希望寫得更短。

謝謝

編輯解決:

public void traziKlijenta(KlijentiFormEvent klijentiFormEvent) throws SQLException {

    String nazivK = returnNullIfEmptys(klijentiFormEvent.getNaziv());
    String adresaK = returnNullIfEmptys(klijentiFormEvent.getAdresa());
    String gradK = returnNullIfEmptys(klijentiFormEvent.getGrad());
    String drzavaK = returnNullIfEmptys(klijentiFormEvent.getDrzava());
    String telefonK = returnNullIfEmptys(klijentiFormEvent.getTelefon());
    String faxK = returnNullIfEmptys(klijentiFormEvent.getFax());
    String mailK = returnNullIfEmptys(klijentiFormEvent.getMail());
    String mobitelK = returnNullIfEmptys(klijentiFormEvent.getMobitel());
    String oibK = returnNullIfEmptys(klijentiFormEvent.getOib());
    String ugovorK = returnNullIfEmptys(klijentiFormEvent.getUgovor());
    String osobaK = returnNullIfEmptys(klijentiFormEvent.getOsoba());

    klijentiSearchModel.clear();

    String sql = "select * from zavrsni.klijenti where naziv like '%"+nazivK+"%' or adresa like '%"+adresaK+"%' or grad like '%"+gradK+"%' or drzava like '%"+drzavaK+"%' or telefon like '%"+telefonK+"%' or fax like '%"+faxK+"%' or mail like '%"+mailK+"%' or mobitel like '%"+mobitelK+"%' or oib like '%"+oibK+"%' or ugovor like '%"+ugovorK+"%' or osoba like '%"+osobaK+"%' ";
    Statement selectStmt = con.createStatement();
    ResultSet result = selectStmt.executeQuery(sql);

    while(result.next()) {
        int id = result.getInt("id");
        String naziv = result.getString("naziv");
        String adresa = result.getString("adresa");
        String grad = result.getString("grad");
        int posBr = result.getInt("posBr");
        String drzava = result.getString("drzava");
        String telefon = result.getString("telefon");       
        String fax = result.getString("fax");
        String mail = result.getString("mail");
        String mobitel = result.getString("mobitel");
        String oib = result.getString("oib");
        String ugovor = result.getString("ugovor");
        String osoba = result.getString("osoba");

        KlijentiModelSearch klijentSearch = new KlijentiModelSearch(id, naziv, adresa, grad, posBr, drzava, telefon, fax, mail, mobitel, oib, ugovor, osoba);
        klijentiSearchModel.add(klijentSearch);
    }

    result.close();
    selectStmt.close();

}
private String returnNullIfEmptys(String value) {
    if (value == null || value.length() == 0) {
        return null;
    }
    return value;
}

使用您的實際代碼,評論問題中的@khelwood命題是最好的方法。
其他解決方案會產生開銷並改變您的設計而不會帶來附加價值。

public static String returnNullIfEmpty(String value){
   if (value == null || value.length() == 0){
      return null;
   }
     return value;
}

然后你可以用這種方式調用它:

nazivK = returnNullIfEmpty(nazivK);
adresaK= returnNullIfEmpty(adresaK);

編輯

通過編輯問題,您可以將處理包括為從klijentiFormEvent對象檢索值的時間:

String nazivK =  returnNullIfEmpty(klijentiFormEvent.getNaziv());
String adresaK = returnNullIfEmpty(klijentiFormEvent.getAdresa());
...

你只需要把你的數組/列表......無論那些東西......放到另一個數組或列表中。

然后迭代該數組/列表。

完成。

並提示:您的命名可以得到顯着改善。 你的名字應該表明變量背后的“東西”究竟是什么。

您還可以使用Map<String, List<?>>來存儲列表/數組/字符串。 例如使用List

    Map<String, List<?>> map = new HashMap<>();
    map.put("nazivK", new ArrayList<>());
    map.put("adresaK", new ArrayList<>());
    //.....
    //replace all lists with null
    map.replaceAll((s, list) -> list.isEmpty() ? null : list);

    //or just remove it
    for(Iterator<Map.Entry<String, List<?>>> it = map.entrySet().iterator(); it.hasNext(); ) {
        Map.Entry<String, List<?>> entry = it.next();
        if(entry.getValue().isEmpty()) {
            it.remove();
        }
    }

正如GhostCat所建議的那樣,將您的值放入數組/列表中。 你可以這樣做(我想這些值是字符串):

/* Order in array nazivK, adresaK, gradK, drzavaK, telefonK,
   faxK, mailK, mobitelK, oibK, ugovorK, osobaK */
   String values[] = new String[11];
   for (String val: values) {
       if (val == null || val.length() == 0) {
           val = null;
       }
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM