用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