用StringBuffer類拼接SQL語句


  在開發的時候難免遇見先判斷參數然后寫SQL語句的情況。如果用if...else...會非常麻煩。推薦使用StringBuffer。

      首先創建StringBuffer對象

      StringBuffer buffer = new StringBuffer();

      或者StringBuffer buffer = new StringBuffer ("XXXXXXXXXXXXXXXXXXXXXX");

      下面用實例來說明。

       假如在DAO層有一個方法:

       public List getList(String param1,String param2,String param3,String param4){

    //條件是在參數不為空的條件下才將其列入查詢條件

           //StringBuffer buffer = new StringBuffer("select * from table1 where");

    //你是不是會這樣寫

           //if(param1!=null){buffer.append("param1 = "+param1)}

           //if(param2!=null){buffer.append("and param2 = "+param1)}

           //if(param3!=null){buffer.append("and param3 = "+param1)}

           //if(param4!=null){buffer.append("and param4 = "+param1)}

           //但是這樣就存在一個問題,如果param1==null,而param2!=空

           //那么你拼的sql語句就成了select * from table1 where and param2 = param2。在where后多了一個and,肯定會報SQL語句的異常。

           //問題貌似無法解決。如果where后面已經存在一個邏輯判斷,那么其余的判斷前就可以使用and了,關鍵在此。

           StringBuffer buffer = new StringBuffer("select * from table1 where 1=1");//神奇的“1=1”

           //1=1永遠都是true,

            if(param1!=null){buffer.append("and param1 = "+param1)}

            if(param2!=null){buffer.append("and param2 = "+param1)}

            if(param3!=null){buffer.append("and param3 = "+param1)}

            if(param4!=null){buffer.append("and param4 = "+param1)}

           //即使所有條件都是null也不會報錯。

           //String str = buffer.toString();//得到SQL字符串。

       }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM