@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};}
我有两个疑问恳求解惑:我只需要接受一个用户的id,给sql语句中的三个占位符赋予同样的值,有没有什么方法?
还有现在我把传过来的id放入数组分别给三个占位符赋值,但是这个方法执行错误,不知道为什么,在赋予第二个占位符时候报错
java.sql.SQLException: No value specified for parameter 2 求解答
不要建数组,直接find(sql,uid,uid,uid)
我在后面跟参数的时候都是uid,uid,uid的,你这样的用一个数组是可以的吗?
回复<aclass='referer'target='_blank'>@fyxjsj:你就别跟着list了,直接就用三个uid,uid,uid这样,传入就行了不可以,我想传一个uid就给三个参数赋值,但是没做到JFinalActiveRecrod插件仅仅对jdbc做了极薄封装,jfinal在拿到sql和参数后,直接就拿给jdbc去处理了,所以没有提供sql占位符传参的功能。这样做的好处是性能最大化,并且框架本身的复杂度会降低,不过未来仍然会考虑占位符传参的功能,主要看需求是否强烈。
楼主碰到的sql执行错误,目测是where子句后面需要添加相应的别名,如w.uid s.uid h.uid
回复<aclass='referer'target='_blank'>@竹林心风:目前还没有添加此功能,很多更重要的功能正在设计中,一步步来回复<aclass='referer'target='_blank'>@竹林心风:而且?太多的时候容易--对错了需求应该很强烈啊,不知道现在实现了没,只要出现多个?的地方,如果值是一样的,实在不想写那么长的参数,最好给一个Map<String,String>params,放入全部参数值,以免复杂sql参数列表太长不好看版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。