Jfinal对于查询语句的多个参数赋值问题

fyxjsj 发布于 2014/04/01 16:39
阅读 2K+
收藏 1

@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  求解答  



加载中
1
徐小路
徐小路
不要建数组,直接find(sql,uid,uid,uid)
0
chrishao
chrishao

我在后面跟参数的时候都是uid,uid,uid的,你这样的用一个数组是可以的吗?

chrishao
chrishao
回复 @fyxjsj : 你就别跟着list了,直接就用三个uid,uid,uid这样,传入就行了
fyxjsj
fyxjsj
不可以,我想传一个uid就给三个参数赋值,但是没做到
0
JFinal
JFinal

    JFinal ActiveRecrod插件仅仅对 jdbc 做了极薄封装,jfinal 在拿到 sql 和参数后,直接就拿给 jdbc 去处理了,所以没有提供 sql 占位符传参的功能。这样做的好处是性能最大化,并且框架本身的复杂度会降低,不过未来仍然会考虑占位符传参的功能,主要看需求是否强烈。

    楼主碰到的 sql 执行错误,目测是 where 子句后面需要添加相应的别名,如 w.uid  s.uid  h.uid

JFinal
JFinal
回复 @竹林心风 : 目前还没有添加此功能,很多更重要的功能正在设计中,一步步来
竹林心风
竹林心风
回复 @竹林心风 : 而且?太多的时候容易--对错了
竹林心风
竹林心风
需求应该很强烈啊,不知道现在实现了没,只要出现多个?的地方,如果值是一样的,实在不想写那么长的参数,最好给一个Map<String,String> params,放入全部参数值,以免复杂sql参数列表太长不好看
返回顶部
顶部