@JFinal 你好,想跟你请教个问题:我想通过判断数据库表某一字段值是否在一个集合中,是不是只能通过类似Db.find("select * from xx in (?)", ?)这种方式实现呢,如果我传入的集合是字符串集合该怎么办,不会得手工把list拼接成 ("a", "b", "c")这种样子吧
直接用双引号抱起来就行
开阔了新思路,,之前从来没想过这样写。。。都是生搬硬套
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(")"); } }
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(3)
直接用双引号抱起来就行
开阔了新思路,,之前从来没想过这样写。。。都是生搬硬套
jfinal 是将 sql 与 para 直接扔给了 jdbc 去处理的,所以如下的方式才可以查询:
也就是说 in 里面有多少个参数就需要多少个问号,并且后面的 paras 的个数与问号相同,这个本质上是由 JDBC 决定的,jfinal 并未做任何干预
在实际使用时直接将 in 后面的参数拼接好更方便,因为即便不拼接参数,但 in 后面的问号也要拼起来,所以索性拼参数更加方便,以下是 JFinal 社区拼接的工具类,可以参考一下: