因为之前项目中,分页信息与查询信息封装在不同的层面,一直没能认真考虑,多条件查询与分页的关系,这次有机会了解到,希望对大家有所帮助!
首先我们要明确一个问题,查询条件是直接加在分页查询之后还是之前?很明显,稍微有点经验的程序员都知道查询应该在分页之前执行,但是在实际编码过程中,对于我这样的新手而言,操作sql语句时只是一味地select ,where根本没能考虑所谓分页与查询的关系,这是不对的。下面的代码是本人经过多次测试的结果:
String SQL="SELECT * FROM ( "+
" SELECT ROW_NUMBER() OVER(ORDER BY ID) AS _NUMBER, "+
" * FROM (SELECT * FROM item WHERE 1 = 1 ";
String SQL1 =" )a ) AS TBL "+
" WHERE _NUMBER BETWEEN ? and ? ";
if(!no.equals("NONE") ){
SQL = SQL+" and no like "+find;
}
if(!area.equals("NONE")){
SQL = SQL+" and area like "+find1;
}
if(!name.equals("NONE")){
SQL = SQL+" and name like "+find2;
}
String SQL2 =SQL+SQL1;
System.out.println(SQL2);
SQL2即为多条件分页查询。
本人希望大家多看书,多学习基础,网络虽好,但是就像总监说的一样,国内的大多数程序员在编写代码时太过依赖他人,只要自己的需求看着和别人的相似,就把别人的代码拿过来直接复制粘贴,结果错了又把另一个人的代码复制粘贴,最后搞得越来越乱!
再次希望大家打牢基础,好好学习!培养思维习惯很重要!!!!