大佬们,求救,有个问题请各位朋友帮忙分析一下。

耳威巴帝 2018-06-14 10:48:15
数据库表中设计如下:


id:主键,pid:父ID,num是int数据,class_id:是层级

我现在界面上将id为1的所有numa,numb,numc,numd4个数据加1或者是减1

要求将id为1的下面所有子节点的numa,numb,numc,numd的同样加1或者是减1

比如:
id=1的numa,numb,numc,numd设置为19,19,19,19说明全部减1了,那么子节点全部减1也为19

又比如:
id=1的numa,numb,numc,numd设置为21,19,21,19说明numa和numc加1了,而numa和numc减1了,那么相应的子节点也应该是numa和numc加1了,而numa和numc减1

用代码或者是SQL均可以,我用的是mybaties

这个要怎么做啊,想了几天了,实在没有好的办法了。
...全文
911 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
stacksoverflow 2018-06-15
  • 打赏
  • 举报
回复
用class_id,比如更新1-2下面的所有记录: update 表名 set numa=numa+1,numb=numb+1,numc=numc+1,numd=numd+1 where class_id like '1-2%'
竹子_bamboo 2018-06-15
  • 打赏
  • 举报
回复
写个简单的demo给你参考下

@Test
    private void test() {
        String id = "1";
        String numa = "+1";
        String numb = "+1";
        String numc = "+1";
        String numd = "+1";
        //根据id查询数据
        Num num = findById(id);
        num.setNuma(numCalculate(num.getNuma, numa));
        num.setNumb(numCalculate(num.getNumb, numb));
        num.setNumc(numCalculate(num.getNumc, numc));
        num.setNumd(numCalculate(num.getNumd, numd));
        save(num);//保存更新
        //根据pid查询数据库数据集合,自己写sql
        List<Num> list = findByPid(id);
        for (Num n : list) {
            n.setNuma(numCalculate(n.getNuma, numa));
            n.setNumb(numCalculate(n.getNumb, numb));
            n.setNumc(numCalculate(n.getNumc, numc));
            n.setNumd(numCalculate(n.getNumd, numd));
        }
        save(list);//批量保存保存
    }

    /**
     * @param oldNum
     * @param num
     * @return
     * @Description: 数值计算
     * @Title: numCalculate
     */
    private int numCalculate(int oldNum, String num) {
        if (num.contains("+")) {
            return oldNum + Integer.parseInt(num.split("\\+")[1]);
        } else if (num.contains("-")) {
            return oldNum - Integer.parseInt(num.split("\\+")[1]);
        }
        return oldNum;
    }
getdate 2018-06-15
  • 打赏
  • 举报
回复
你这需求,你的父级节点的值发生变化后,子级跟着发生对应的变化,那子级的子级呢?同理,再往下呢?是不是要推到最后一个节点呢?
stacksoverflow 2018-06-15
  • 打赏
  • 举报
回复
引用 3 楼 xiewu91124 的回复:
既然有class_id ,2楼的sql应该能满足你的需求
等于没说。
楓VS痕 2018-06-15
  • 打赏
  • 举报
回复
既然有class_id ,2楼的sql应该能满足你的需求

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧