在很多案例中都用到树Tree,这里以部门树为例,来讲述整个的实现思路。树给人的感觉是有层级划分的,而且是有排序的,首先我们去构建部门树的数据库表结构,下面是表的sql语句;
CREATE TABLE `sys_dept` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '部门id',
`name` varchar(20) NOT NULL DEFAULT '' COMMENT '部门名称',
`parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '上级部门id',
`level` varchar(200) NOT NULL DEFAULT '' COMMENT '部门层级',
`seq` int(11) NOT NULL DEFAULT '0' COMMENT '部门当前层级下的顺序,由小到大',
`remark` varchar(200) DEFAULT '' COMMENT '备注',
`operator` varchar(20) NOT NULL DEFAULT '' COMMENT '操作者',
`operate_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后一次操作的时间',
`operate_ip` varchar(20) NOT NULL DEFAULT '' COMMENT '最后一次更新操作者的ip',
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
根据数据库表,利用mybatis的逆向工程,生成SysDept,SysDeptMapper,SysDeptMapper.xml,三个文件。接下来我们要去创建一个生成level的工具类:
public class LevelUtil { public final static String SEPARATOR = "."; public final static String ROOT = "0"; // 0 // 0.1 // 0.1.2 // 0.1.3 // 0.4 public static String calculateLevel(String parentLevel, int parentId) { if (StringUtils.isBlank(parentLevel)) { return