开发者社区 问答 正文

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

其他值取不到。

就能取到其他值了,可是 参数是对象,

这个写还报错,不知道怎么写了

展开
收起
爱吃鱼的程序员 2020-06-08 16:10:50 466 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    注意两点就好:一个是表达式中永远不要出现 #号符,直接取变量就好,例如#(n.key)。

    第二点是 #p指令目前只支持#p(obj)而不支持#p(obj.field),jfinal3.1将支持后面这种形式,目前可以通过一个#set(temp=obj.field)先将值赋给一个中间变量,然后再通过#p(temp)来使用

    @JFinal 谢谢波总

    此外,sql管理功能的用法除了那三个专用指令以外,所有jfinaltemplateengine的用法全部支持,所以先看一下jfinal手册中的templateengine这一章是极有帮助的 #p指令在功能上是一直支持#p(obj.field)的,只不过在对参数类型进行判断时禁止了obj.field的形式,下个版本会去除这个禁止规则,立即就可以支持,对map进行迭代时使用#p指令是极极有用的

    引用来自“JFinal”的评论

    注意两点就好:一个是表达式中永远不要出现 #号符,直接取变量就好,例如#(n.key)。

    第二点是 #p指令目前只支持#p(obj)而不支持#p(obj.field),jfinal3.1将支持后面这种形式,目前可以通过一个#set(temp=obj.field)先将值赋给一个中间变量,然后再通过#p(temp)来使用

    回复 @JFinal:波总神威一个意念就帮我把问题解决了感谢波总。回复 @frankbak:可能是eclipse的bug,也可能是当时class文件没有被正常编译回复 @JFinal:debug了一下都正常,我又把limit去掉了,能取到数据了,然后把limit加回去,也能取到数据,现在是正常了不知道为什么。先看一下SqlPara对象中的是什么数据,然后单步调试跟踪到Db.find(sqlPara)中去,看数据有啥变化
    2020-06-08 16:11:03
    赞同 展开评论
问答分类:
SQL
问答地址: