Jfinal Db.find使用sql语句in

发布于 2021-12-07 08:19:48 字数 250 浏览 746 评论 3

@JFinal 你好,想跟你请教个问题:我想通过判断数据库表某一字段值是否在一个集合中,是不是只能通过类似Db.find("select * from xx in (?)", ?)这种方式实现呢,如果我传入的集合是字符串集合该怎么办,不会得手工把list拼接成 ("a", "b", "c")这种样子吧

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一笔一画续写前缘 2021-12-08 17:35:01

直接用双引号抱起来就行

筱果果 2021-12-08 15:33:35

开阔了新思路,,之前从来没想过这样写。。。都是生搬硬套

恋你朝朝暮暮 2021-12-07 15:36:51

   jfinal 是将 sql 与 para 直接扔给了 jdbc 去处理的,所以如下的方式才可以查询:

find("select * from t where id in(?,?,?)", 1,2,3);

   也就是说 in 里面有多少个参数就需要多少个问号,并且后面的 paras 的个数与问号相同,这个本质上是由 JDBC 决定的,jfinal 并未做任何干预

   在实际使用时直接将 in 后面的参数拼接好更方便,因为即便不拼接参数,但 in 后面的问号也要拼起来,所以索性拼参数更加方便,以下是 JFinal 社区拼接的工具类,可以参考一下:

public class SqlKit {
 //将 id 列表 join 起来,用逗号分隔,并且用小括号括起来
 public static void joinIds(List<Integer> idList, StringBuilder ret) {
  ret.append("(");
  boolean isFirst = true;
  for (Integer id : idList) {
    if (isFirst) {
      isFirst = false;
    } else {
      ret.append(", ");
    }
    ret.append(id.toString());
  }
  ret.append(")");
 }
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文