1.提供一个ArrayList容器,把数据保存在里面,因为递归函数,获取返回值比较麻烦,这样调用完,取ArrayLis就可以了。

  1. /**
  2. * 拼接组合名称mername
  3. *
  4. * @param vueRegion 对象
  5. * @param list 拼接词
  6. * @return
  7. */
  8. private void getMername(VueRegion vueRegion, ArrayList<String> list) {
  9. //判断父级是否存在
  10. if (vueRegion != null) {
  11. //压入数组
  12. list.add(vueRegion.getName());
  13. log.info("数组{}:{}", vueRegion.getName(), list.toString());
  14. //获取父级对象
  15. VueRegion parentRegion = getById(vueRegion.getPid());
  16. //递归调用
  17. getMername(parentRegion, list);
  18. }
  19. }

2、调用递归函数,如果list顺序不对,可以使用,Collections.reverse(list);进行反转

  1. @Override
  2. public boolean tjModify(VueRegion vueRegion) {
  3. //new个数组用来存数据
  4. ArrayList list = new ArrayList();
  5. //调用递归换算
  6. getMername(vueRegion, list);
  7. //反转数组
  8. Collections.reverse(list);
  9. //数组转字符串
  10. String mername = StringUtils.join(list, ",");
  11. //给java对象设置值
  12. vueRegion.setMername(mername);
  13. //更新
  14. return updateById(vueRegion);
  15. }

3.StringUtils.join(list, “,”);可以把数组转字符串,用,号连接,或其他符号