树形结构
行吧行吧,又做回JAVA了
在springboot中,撰写接口,返回树形图无限分级
一、为了最快做出来,直接三级固定死,在MySql中写死
1.1 在entity中建立子类存放
package *.dataresource.entity.dataobject; @Data @Getter @Setter @AllArgsConstructor @NoArgsConstructor public class MasterBusiness extends BaseDO implements Serializable {//实现树状结构 private Listchildren; }
1.2在dal中建立数据库接口
package *.dataresource.dal; @Repository public interface IMasterBusinessRepository {//树状查询 ListselectTree(); }
1.3在mapping中配置映射
<resultMap id="TreeResultMap" type="*.dataresource.entity.dataobject.MasterBusiness"> <id column="businessId1" property="businessId" jdbcType="INTEGER"/> <result column="businessCode1" property="businessCode" jdbcType="VARCHAR"/> <result column="businessName1" property="businessName" jdbcType="VARCHAR"/> <result column="businessLevel1" property="businessLevel" jdbcType="VARCHAR"/> <result column="parentId1" property="parentId" jdbcType="VARCHAR"/> <result column="sort1" property="sort" jdbcType="VARCHAR"/> <result column="explain1" property="explain" jdbcType="VARCHAR"/> <result column="status1" property="status" jdbcType="INTEGER"/> <result column="createUser1" property="createUser" jdbcType="VARCHAR"/> <result column="createTime1" property="createTime" jdbcType="TIMESTAMP"/> <result column="modifyUser1" property="modifyUser" jdbcType="VARCHAR"/> <result column="modifyTime1" property="modifyTime" jdbcType="TIMESTAMP"/> <collection property="children" ofType="*.dataresource.entity.dataobject.MasterBusiness"> <id column="businessId2" property="businessId" jdbcType="INTEGER"/> <result column="businessCode2" property="businessCode" jdbcType="VARCHAR"/> <result column="businessName2" property="businessName" jdbcType="VARCHAR"/> <result column="businessLevel2" property="businessLevel" jdbcType="VARCHAR"/> <result column="parentId2" property="parentId" jdbcType="VARCHAR"/> <result column="sort2" property="sort" jdbcType="VARCHAR"/> <result column="explain2" property="explain" jdbcType="VARCHAR"/> <result column="status2" property="status" jdbcType="INTEGER"/> <result column="createUser2" property="createUser" jdbcType="VARCHAR"/> <result column="createTime2" property="createTime" jdbcType="TIMESTAMP"/> <result column="modifyUser2" property="modifyUser" jdbcType="VARCHAR"/> <result column="modifyTime2" property="modifyTime" jdbcType="TIMESTAMP"/> <collection property="children" ofType="*.dataresource.entity.dataobject.MasterBusiness"> <id column="businessId3" property="businessId" jdbcType="INTEGER"/> <result column="businessCode3" property="businessCode" jdbcType="VARCHAR"/> <result column="businessName3" property="businessName" jdbcType="VARCHAR"/> <result column="businessLevel3" property="businessLevel" jdbcType="VARCHAR"/> <result column="parentId3" property="parentId" jdbcType="VARCHAR"/> <result column="sort3" property="sort" jdbcType="VARCHAR"/> <result column="explain3" property="explain" jdbcType="VARCHAR"/> <result column="status3" property="status" jdbcType="INTEGER"/> <result column="createUser3" property="createUser" jdbcType="VARCHAR"/> <result column="createTime3" property="createTime" jdbcType="TIMESTAMP"/> <result column="modifyUser3" property="modifyUser" jdbcType="VARCHAR"/> <result column="modifyTime3" property="modifyTime" jdbcType="TIMESTAMP"/> collection> collection> resultMap>
<select id="selectTree" resultMap="TreeResultMap"> SELECT c1.businessId 'businessId1', c1.businessCode 'businessCode1', c1.businessName 'businessName1', c1.businessLevel 'businessLevel1', c1.parentId 'parentId1', c1.sort 'sort1', c1.`explain` 'explain1', c1.`status` 'status1', c1.createUser 'createUser1', c1.createTime 'createTime1', c1.modifyUser 'modifyUser1', c1.modifyTime 'modifyTime1', c2.businessId 'businessId2', c2.businessCode 'businessCode2', c2.businessName 'businessName2', c2.businessLevel 'businessLevel2', c2.parentId 'parentId2', c2.sort 'sort2', c2.`explain` 'explain2', c2.`status` 'status2', c2.createUser 'createUser2', c2.createTime 'createTime2', c2.modifyUser 'modifyUser2', c2.modifyTime 'modifyTime2', c3.businessId 'businessId3', c3.businessCode 'businessCode3', c3.businessName 'businessName3', c3.businessLevel 'businessLevel3', c3.parentId 'parentId3', c3.sort 'sort3', c3.`explain` 'explain3', c3.`status` 'status', c3.createUser 'createUser3', c3.createTime 'createTime3', c3.modifyUser 'modifyUser3', c3.modifyTime 'modifyTime3' FROM ( SELECT * FROM master_business WHERE `status` = 1 ) c1 LEFT JOIN ( SELECT * FROM master_business WHERE `status` = 1 ) c2 ON c2.parentId = c1.businessId LEFT JOIN ( SELECT * FROM master_business WHERE `status` = 1 ) c3 ON c3.parentId = c2.businessId WHERE c1.businessLevel = 1 select>
1.4在bll中建立业务接口
package *.dataresource.bll; public interface IMasterBusinessService {//查询树 ListselectTree(); }
1.5在impl实现业务接口
package *.dataresource.bll.impl; @Service public class MasterBusinessService extends BaseService implements IMasterBusinessService { @Autowired private IMasterBusinessRepository masterBusinessRepository; //查询树 @Override public ListselectTree() { return masterBusinessRepository.selectTree(); }
}
1.6在controller中获取路由与设置数据
package *.dataresource.controller; @RestController @RequestMapping("masterBusiness") public class MasterBusinessController extends BaseController { @Autowired private IMasterBusinessService masterBusinessService; //查询树 @GetMapping("/selectAll") public ListselectMasterBusiness()throws Exception{ return masterBusinessService.selectTree(); }
}
1.7路由访问:
{{host}}/masterBusiness/selectAll
二、后续更新无限级分类