干掉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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值