您的位置:首页 > 编程语言 > Java开发

SpringBoot+JPA+ElementUi 给级联选择器Cascader返回树形结构数据

2018-03-18 22:46 417 查看
如题,最近项目刚结束,来整理下,不喜勿碰,欢迎大神指教!!!
目前项目中的Cascader使用一般都是写js脚本,现在要求把信息配置在数据库中。直接上代码

信息配置表的设计:
DROP TABLE IF EXISTS `tree_node_configuration`;
CREATE TABLE `tree_node_configuration` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `tree_name` varchar(100) NOT NULL COMMENT '名称(标识一棵树)',
  `node_code` varchar(50) NOT NULL COMMENT '节点编码',
  `father_node_code` varchar(50) DEFAULT NULL COMMENT '父节点编码',
  `node_name` varchar(100) DEFAULT NULL COMMENT '节点名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8;
实体定义:
@Entity
@Table(name = "TREE_NODE_CONFIGURATION")
public class TreeNodeConfiguration implements java.io.Serializable {
    /** 版本号 */
    private static final long serialVersionUID = -5207289768631569866L;

    /**  */
    @Id
    @Column(name = "ID")
    @GeneratedValue
    private Long id;

    /** 名称(标识一棵树) */
    @Column(name = "TREE_NAME")
    private String treeName;

    /** 节点编码 */
    @Column(name = "NODE_CODE")
    private String nodeCode;

    /** 父节点编码 */
    @Column(name = "FATHER_NODE_CODE")
    private String fatherNodeCode;

    /** 节点名称 */
    @Column(name = "NODE_NAME")
    private String nodeName;
    
    @Transient

    private List<TreeNodeConfiguration> children;
   get/set省略,,,,

JPA获取数据:
public interface TreeNodeConfigurationRepository extends JpaRepository<TreeNodeConfiguration, Long>{

List<TreeNodeConfiguration> findByTreeName(String treeName);

TreeNodeConfiguration findByFatherNodeCodeIsNull();

TreeNodeConfiguration findByNodeCode(String nodeCode);

}
ServiceImpl:
public List<TreeNodeConfiguration> getTree(String treeName) {

return TreeNodeConfigurationRepository.findByTreeName(treeName);
}

controller的代码:
@RequestMapping(value = "/api/treeNodeConfiguration/tree",method = RequestMethod.GET)
public List<TreeNodeConfiguration> getTreeNodeConfiguration(){
List<TreeNodeConfiguration> tree = treeNodeConfigurationService.getTree("XXX");//XXX是树的名称
TreeNodeConfiguration root = treeNodeConfigurationService.getRoot();
TreeUtils.createTree(tree, root, "nodeCode", "fatherNodeCode", "children");
List<TreeNodeConfiguration> returnList = new ArrayList<TreeNodeConfiguration>();
returnList.add(root);
return returnList;

}
前端代码:
<el-cascader
style="width:320px"
:options="options"
@change="handleChange"
:props="props">
</el-cascader>
getTree(){
let self = this;
this.$axios.get('/api/treeNodeConfiguration/tree').then((res) => {
this.options = res.data;
})
}


这样给ElementUI传到前端的就是树形结构数据了,只不过是一次性加载的,数据量很大的时候性能肯定不好,ElementUI同样支持动态加载次级选项,有时间再研究
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐