Sql 管理功能 中的 for语句 取值 问题
@JFinal 波总您好 再次打扰您了
您文档中的这个例子 我用的时候
JMap condMap = JMap.create("1st","第一").set("2nd","第二").set("3th","第三").set("statusok", "ok");
Db.getSqlPara("find",condMap) 只能取到 select * from table where status = ok
其他值取不到。
就能取到其他值了,可是 参数是对象,
这个写还报错,不知道怎么写了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
先看一下 SqlPara 对象中的是什么数据,然后单步调试跟踪到 Db.find(sqlPara) 中去,看数据有啥变化
回复
@JFinal : debug了一下 都正常, 我又把limit去掉了,能取到数据了,然后 把limit加回去,也能取到数据,现在是正常了 不知道为什么。
回复
@frankbak : 可能是 eclipse 的 bug,也可能是当时 class 文件没有被正常编译
回复
@JFinal : 波总神威 一个意念就帮我把问题解决了 感谢波总。
引用来自“JFinal”的评论
注意两点就好:一个是表达式中永远不要出现 #号符,直接取变量就好,例如#(n.key)。
第二点是 #p 指令目前只支持#p(obj) 而不支持 #p(obj.field),jfinal 3.1 将支持后面这种形式,目前可以通过一个 #set(temp = obj.field) 先将值赋给一个中间变量,然后再通过 #p(temp) 来使用
#p 指令在功能上是一直支持#p(obj.field) 的,只不过在对参数类型进行判断时禁止了 obj.field 的形式,下个版本会去除这个禁止规则,立即就可以支持,对 map 进行迭代时使用 #p 指令是极极有用的
此外,sql 管理功能的用法除了那三个专用指令以外,所有 jfinal template engine 的用法全部支持,所以先看一下jfinal手册中的 template engine 这一章是极有帮助的
@JFinal 谢谢波总
注意两点就好:一个是表达式中永远不要出现 #号符,直接取变量就好,例如#(n.key)。
第二点是 #p 指令目前只支持#p(obj) 而不支持 #p(obj.field),jfinal 3.1 将支持后面这种形式,目前可以通过一个 #set(temp = obj.field) 先将值赋给一个中间变量,然后再通过 #p(temp) 来使用