NutzCN Logo
问答 关于Chain.makeSpecial(String name,Object value)方法的疑问.
发布于 3049天前 作者 @yz 3030 次浏览 复制 上一个帖子 下一个帖子
标签:

nutz源码如下

//=============================================================
    //===========update语句使用特定的值,例如+1 -1 toDate()等========
    //=============================================================
    
    /**
     * 添加一个特殊节点, 如果value非空,则有3个情况:<p>
     * <li>+1 效果如age=age+1</li>
     * <li>-1 效果如count=count-1</li>
     * <li>支持的运算符有 + - *\/ % & ^ |
     * <li>其他值, 则对value.toString(),效果如 time=todate("XXXXX")</li>
     * 
     * @since 1.b.44
     */
    public abstract Chain addSpecial(String name, Object value);
    
    /**
     * @see org.nutz.dao.Chain#addSpecial(String, Object)
     * @since 1.b.44
     */
    public static Chain makeSpecial(String name, Object value) {
        DefaultChain chain = new DefaultChain(name, value);
        chain.head.special = true;
        return chain;
    }

现象如下

比如字段count库里存放是2, 希望执行完是1, 但是下面的语句并不生效.

dao.update(A.class, Chain.makeSpecial("count", -1), Cnd.where("id", "=", 1));

改成如下语句可以生效.

dao.update(A.class, Chain.makeSpecial("count", "-1"), Cnd.where("id", "=", 1));

疑问如下

nutz源码中的"+1 效果如age=age+1"这个描述中的前面的"+1"指的就是要转成字符串作为参数value的值传入吗?

6 回复

是的. 传入字符串"+1"是age=age+1的效果.

看来我理解错了源码的注释. 谢谢!

不过我还是觉得源码描述的不够精准.

@qq_1dd23c23 恩,我改改

添加回复
请先登陆
回到顶部