@JFinal 你好,想跟你请教个问题:
我希望查询多个表,所以需要传多个参数,我用的是Db的find方法,sql代码如下:
"select w.content,w.count from wall w WHERE uid = ? "
UNION
"select s.content,s.count from sechand s WHERE uid = ? "
UNION
"select h.content,h.count from hangout h WHERE uid = ? ";
方法如下:
public void findAllDynamic() {
//客户端传过来的用户id
int uid = getParaToInt(0)
int [] uids = {uid,uid,uid};List<Record> dynamicList=Db.find(DaoConstant.DYNAMICSQL,uids);
setAttr("dynamicList" ,dynamicList);
setAttr("result", 1);
setAttr("msg", "success");
renderJson();
}
我有两个疑问恳求解惑:我只需要接受一个用户的id,给sql语句中的三个占位符赋予同样的值,有没有什么方法?
还有现在我把传过来的id放入数组分别给三个占位符赋值,但是这个方法执行错误,不知道为什么,在赋予第二个占位符时候报错
java.sql.SQLException: No value specified for parameter 2 求解答
我在后面跟参数的时候都是uid,uid,uid的,你这样的用一个数组是可以的吗?
JFinal ActiveRecrod插件仅仅对 jdbc 做了极薄封装,jfinal 在拿到 sql 和参数后,直接就拿给 jdbc 去处理了,所以没有提供 sql 占位符传参的功能。这样做的好处是性能最大化,并且框架本身的复杂度会降低,不过未来仍然会考虑占位符传参的功能,主要看需求是否强烈。
楼主碰到的 sql 执行错误,目测是 where 子句后面需要添加相应的别名,如 w.uid s.uid h.uid