前言
可以说 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'