DodoTreeRef:树注解

配置说明

属性名称备注
mapParentField上级字段名。注:多表树时,如果最外层实体类不是树状结构,则配置固定值:ROOT_END
selfQueryParams附加查询条件,多个查询条件使用符号“;”隔开 具体参见源代码中的注释

一、单表树

单表树,指的是,一个实体类中有一个字段,指向父级

DEMO例子:

例子:如系统中的菜单实体类

  1. /**
  2. * 菜单实体类,有字段parentMenuInfo指向父级菜单,自身为一棵树
  3. */
  4. // mapParentField 指向父级字段 parentMenuInfo
  5. @DodoTreeRef(mapParentField = "parentMenuInfo")
  6. public class MenuInfo extends BaseEntity{
  7. @DodoField(sortSeq = 1,name="父级菜单")
  8. private MenuInfo parentMenuInfo;
  9. //.....
  10. }

图片

二、多表树

多表树,指的是,A实体中字段指向B实体,B实体字段指向C实体,那么ABC实体即为树状结构

例子:如系统中的国家、省份、城市、区域组成了多表树

  1. /**
  2. * 国家
  3. */
  4. // 国家本身不是树状结构,mapParentField执行固定值:__ROOT_END__
  5. @DodoTreeRef(mapParentField = "__ROOT_END__")
  6. public class Country extends BaseEntity{
  7. //.....
  8. }
  9. /**
  10. * 省份
  11. */
  12. //mapParentField 指向父级字段 country
  13. @DodoTreeRef(mapParentField = "country")
  14. public class Province extends BaseEntity{
  15. @DodoField(sortSeq = 1,name="所属国家")
  16. private Country country;
  17. //.....
  18. }
  19. /**
  20. * 城市
  21. */
  22. // mapParentField 指向父级字段 province
  23. @DodoTreeRef(mapParentField = "province")
  24. public class Country extends BaseEntity{
  25. @DodoField(sortSeq = 1,name="所属省份")
  26. private Province province;
  27. //.....
  28. }

图片

三、混合树

混合树,是在多表树的基础上,最顶层实体类可自成单表树

例子:如系统中的菜单+权限组成了混合树

  1. /**
  2. * 菜单实体类,有字段parentMenuInfo指向父级菜单,自身为一棵树
  3. */
  4. // mapParentField 指向父级字段 parentMenuInfo
  5. @DodoTreeRef(mapParentField = "parentMenuInfo")
  6. public class MenuInfo extends BaseEntity{
  7. @DodoField(sortSeq = 1,name="父级菜单")
  8. private MenuInfo parentMenuInfo;
  9. //.....
  10. }
  11. /**
  12. * 权限实体类
  13. */
  14. // mapParentField 指向父级字段 menuInfo
  15. @DodoTreeRef(mapParentField = "menuInfo")
  16. public class Right extends BaseEntity{
  17. @DodoField(sortSeq = 1,name="归属菜单")
  18. private MenuInfo menuInfo;
  19. //.....
  20. }

图片