干掉where 1=1

前言

可以说 where1=1 这个恒为真的条件是前辈的智慧,解决了SQL动态拼接查询的困扰,用起来的确方便,在数据量少的年代的确不错,但是我们都知道这样的话不会走索引,当数据量达到几十万的时候,就明显感到慢了,何况现在是大数据时代,下面提供两种处理方法

使用mybatis

这个比较简单直接用<where>标签就可以了

原生写法

public class Demo2 {
       public static void main(String[] args) {
        doQuery();
       }
        private static void doQuery(){
           boolean flag = false;
            String name = "张三";
            Integer age =26;
            StringBuilder sql = new StringBuilder("select * from tb_users");
            if(!StringUtils.isEmpty(name)){
               flag= isAppendWhere(sql,flag);
                sql.append(" name like '%"+name+"%'");
            }
            if(!StringUtils.isEmpty(age)){
               flag= isAppendWhere(sql,flag);
                sql.append(" age = "+'"+age+"'’);
            }
            System.out.println("sql = " + sql);
        }

        private static Boolean isAppendWhere(StringBuilder sql,Boolean falg){
            if (!falg ) {
                sql.append(" where ");
            } else {
                sql.append(" and ");
            }
           return true;
         }
}

result : sql = select * from tb_users where  name like '%张三%' and  age ='26'

猜你喜欢

转载自blog.csdn.net/WindwirdBird/article/details/106818970