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 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器