jyjyjj 2010-06-25 17:46
浏览 552
已采纳

关于SQL 拼接的问题 请高手提供想法

比如现在又3个参数 a , b , c
现在要用这3个参数 任意的组合,或单独查符合条件的记录,比如

from User u where u.a=? and u.b=? u.c=?

现在要做 参数拼接

StringBuffer sb = new StringBuffer();
sb.append("from User u where ");

if(a!=null){
sb.append(" u.a=");
sb.append(a);
}
if(b!=null){
sb.append(" and u.b=");
sb.append(b);
}
if(c!=null){
sb.append(" and u.c=");
sb.append(c);
}

现在问题出来了 如果A不等于空的话出来的SQL语句是这样的 from User u where u.a=? and u.b=? and u.c=?;
如果A等于空的话 出来的SQL语句就是这样的 from User u where and u.b=? and u.c=?;

请问怎么才能想个办法 控制这个and 呢?

  • 写回答

12条回答 默认 最新

  • 穿梭时间的光 2010-06-25 20:40
    关注

    上面的答案也可以,不过貌似不太优雅,
    可以这样
    if(a!=null){

    sb.append(" and u.a=");

    sb.append(a);

    }

    if(b!=null){

    sb.append(" and u.b=");

    sb.append(b);

    }

    if(c!=null){

    sb.append(" and u.c=");

    sb.append(c);

    }

    sb.replace("and","");
    StringUtils.replaceOnce(sb.toString(), "and", "");

    每个条件都带and,最后替换下这样就可以了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(11条)

报告相同问题?

悬赏问题

  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退