2013-08-30 17 views
0

我很想知道是否有更好的方法來準備查詢字符串而不檢查來自Java Bean的空值。準備來自java bean的查詢字符串

我有以下的Java bean與性能

的價值和地址不具有價值
public class Employee{ 

    private String name; 

    private String address; 

    //setters and getters i am not mention here 

    } 

假設取名字的意思是null.I要準備查詢字符串象下面這樣:

update table test where name='value from property' where xxx=? 

問候,

chakri

+0

我建議你使用ORM,如Hibernate,這樣你就不必自己做這個。 – Marcelo

+0

這是正確的Marcelo.But我們已經有組件,只會執行2個查詢。所以idont需要在這裏所有的休眠的東西。 – user2680017

回答

1

使用構建器模式構建SQL。沒有什麼魔力:你必須編寫每個構建器類來構建插入,更新,選擇等等。然而,最後你有一個很好的邏輯封裝。這裏是你如何使用它,

String sql = new EmployeeUpdateBuilder() 
    .whereName("Jeff") 
    .valueAddress("123 Main Street") 
    .build(); 

代碼來實現非常簡單,有點忙碌的工作實際,但結果是好的。如果您要針對不同的對象類型編寫一堆這些類型的對象,那麼您可以將各種SQL命令類型(insert,select等)的每個基類放入基類中。

另一種選擇是推廣構建者。你最終得到這樣的用法,

String sql = new UpdateBuilder() 
    .table("employees") 
    .where("name", "Jeff") 
    .value("address", "123 Main Street") 
    .build(); 
+0

傑弗瑞,每一個屬性我必須做空和空字符串check.i想避免that.whatever無屬性沒有null或空.i我要構建查詢字符串。 – user2680017

+0

因此,請在您的查詢生成器中構建檢查。沒有魔法,必須做檢查。 –

+0

我同意你的意見 – user2680017

0

有一種方法可以動態激發查詢。您可以先檢查空值,然後根據該值選擇要在db上激發的查詢。

+0

抱歉,不明白你的意思。 – user2680017

+0

我想基於屬性名稱和它的值動態地準備查詢。 – user2680017

+1

Vimal Bera的解釋是,如果使用引號將值與字符串中的xxx進行比較,那麼最差的情況是向數據庫發送空字符串而不是無效SQL。 –