提示:本工具类基于若依框架抽取,也可以用于其他自建项目
前言
若依框架在工作中给我们带来很大的便利,减轻了我们很多不必要的工作量。在日常使用中为了提高代码复用性和更好的偷懒,个人将原本的若依代码抽取了一些工具类,分享给大家。有什么建议欢迎一起交流~
一、树工具类是什么?
通过提取若依的部门树生成代码整合而成的工具类,并添加自定义的子树查询功能。如果项目中用到的树结构超过两个,可以使用此工具类。不用每次都cv大量代码,并且更好维护。
二、使用步骤
1.实体类
首先,想使用树工具类的实体类,需要继承TreeEntity基类,并提供相应的数据库字段。
必须提供:parentId、parentName,也就是父节点ID和父节点名称。
建议提供:id、name,分别是节点ID和节点名称。这里如果不提供统一命名的字段,那么就需要自己在TreeSelect实体类中手动添加构造方法
TreeEntity基类-修改:
public class TreeEntity<T>{
private static final long serialVersionUID = 1L;
/** 节点ID */
private Long id;
/** 节点名称 */
private String name;
/** 父节点名称 */
private String parentName;
/** 父节点ID */
private Long parentId;
/** 显示顺序 */
private Integer orderNum;
/** 祖级列表 */
private String ancestors;
/** 子节点 */
private List<T> children = new ArrayList<>();
TreeSelect标准树结构类-修改:
public class TreeSelect implements Serializable{
private static final long serialVersionUID = 1L;
/** 节点ID */
private Long id;
/** 节点名称 */
private String label;
/** 子节点 */
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<TreeSelect> children;
public <T extends TreeEntity<T>> TreeSelect(T t) {
this.id = t.getId();
this.label = t.getName();
this.children = t.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
}
// 实例-手动为树结构赋值
public TreeSelect(SysDept dept){
this.id = dept.getDeptId();
this.label = dept.getDeptName();
this.children = dept.getChildren(