加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MYSQL教程Mysql递归查询树型结构实现代码

发布时间:2020-12-12 02:47:37 所属栏目:MySql教程 来源:网络整理
导读:《MYSQL教程Mysql递归查询树型结构实现代码》要点: 本文介绍了MYSQL教程Mysql递归查询树型结构实现代码,希望对您有用。如果有疑问,可以联系我们。 导读:本节内容:mysql递归查询表结构为:分类Id SortId所属分类Id ParentID分类名称 SortName分类描述 So

《MYSQL教程Mysql递归查询树型结构实现代码》要点:
本文介绍了MYSQL教程Mysql递归查询树型结构实现代码,希望对您有用。如果有疑问,可以联系我们。

导读:本节内容:mysql递归查询表结构为:分类Id SortId所属分类Id ParentID分类名称 SortName分类描述 SortDesc测试数据:1000 0 A类 A类...

MYSQL应用本节内容:
mysql递归查询

表结构为:
?分类Id? SortId
?所属分类Id ParentID
?分类名称 SortName
?分类描述 SortDesc

MYSQL应用测试数据:
?1000 0? A类? A类
?1001 1000 A类_1 A类_1
?1002 1000 A类_1 A类_1
?1003 1001 A类_1_1 A类_1_1
?2000 0? B类? B类
?2001 2000 B类_1 B类_1
?2002 2001 B类_1_1 B类_1_1
?2003 1002 A类_1_1 A类_1_1
?2004 2003 A类_1_1_1 A类_1_1_1

MYSQL应用java代码:
?

MYSQL应用(SortBean类略)
?/**
? * 查询分类的树型结构
? */
?public void getSortList(List<SortBean> sortList,Long parentId,int level){?

MYSQL应用? SortBean bean = null;??
? List<SortBean> list = new ArrayList<SortBean>();??
? String sql = "Select * from sort_ s where s.parentId = ?";
? try{??
?? System.out.println("sql:"+sql);
?? list = (List<SortBean>)jdbcDao.queryBeanList(sql,SortBean.class,parentId);//每次查询出上级为的分类
?? System.out.println(list.size());
?? if(list != null && list.size() > 0){??
for(int i=0;i<list.size();i++){??
?bean = (SortBean)list.get(i);?
?bean.setLevel(level+1);?? //添加等级字段
?sortList.add(bean);??
?getSortList(sortList,bean.getSortId(),level+1);?? //递归查询
}??
?? }else{??
level--;
?? }
? }catch(Exception e){??
?? e.printStackTrace();??
? }??
?}??
?

MYSQL应用?
测试类:?
?

public void test_getSortList() {
?
? SortService service = (SortService)beanFactory.getBean("sortService");
? List<SortBean> sortList = new ArrayList<SortBean>();
? service.getSortList(sortList,0L,0); //起始根节点id为0,等级为0
? for(SortBean bean: sortList){
?? String str = "";
?? for(int i=0;i<bean.getLevel();i++){
str +="——";
?? }
?? System.out.println(str+bean.getSortId() + " " + bean.getParentId() + " " + bean.getSortName());
? }
?}
?

MYSQL应用?
查询结果:
1000 0 A类
?|——1001 1000 A类_1
|——1003 1001 A类_1_1
?|——1002 1000 A类_1
?|——2003 1002 A类_1_1
|——2004 2003 A类_1_1_1
2000 0 B类
?|——2001 2000 B类_1
?|——2002 2001 B类_1_1

MYSQL应用代码:
?

/**
?* 删除部门删除时从选中级的所有子级
?*
?* @param dept
?* @return
?*/
public JsonResult delDept(Dept dept) {
JsonResult jr = new JsonResult();
Boolean flags=true;
try {
String str = "";
User user=new User();
List<Dept> sortList = new ArrayList<Dept>();
sortList.add(dept);
? getDeptSortList(sortList,dept.getId()); //起始根节点id,等级为0
? for(Dept bean: sortList){
?user.setDeptId(bean.getId()); //判断部门下面是否有用户
List<User> users =userDao.getByDeptIdIsUerOrNO(user);
?int userSize=users.size();
?if(userSize>0){
?? jr.setMessage("部门名称:(" + users.get(0).getDeptName() + ")已有用户不能删除");
?? flags=false;
?? break;
?}
?? }
?//部门没有被用户使用时才可以册子
?if(flags){
?for(Dept bean: sortList){
? dept.setId(bean.getId());
? deptDao.delDept(dept);
?jr.setMessage(SuccessMessageEnum.detele.toDescription());
?}
?}
? jr.setSuccess(true);
} catch (Exception e) {
log.error("DeptServiceImpl-->delDept:" + e.getMessage());
jr.setCode(ExceptionEnum.SystemError.toCode());
jr.setMessage(e.getMessage());
}
return jr;
}?
?/**
?* 删除时递归部门树
?*
?* @param
?* @return
?*/
?? public void getDeptSortList(List<Dept> sortDeptList,Integer parentId)throws Exception {
?? Dept bean = null;
?//根据选中的部门id得到本部门和第一级所有的子部门的id
?? List<Dept> deptslist=deptDao.getByDeptIdAllSubDeptId(parentId);? //;//每次查询出上级为的分类
?? // int? deptSize=deptslist.size();
if(deptslist.size() > 0){
for(int i=0;i<deptslist.size();i++){
bean = (Dept)deptslist.get(i);
?sortDeptList.add(bean);
?getDeptSortList(sortDeptList,bean.getId()); //递归查询
}
}
}
?

MYSQL应用mysql递归查询实例解析
mysql递归查询(分页版)代码
mysql递归查询替代函数实例
mysql递归查询树形叶子
MySQL 递归查询当前节点子节点
mysql递归查询实现办法
MySQL存储过程递归调用实例

编程之家PHP培训学院每天发布《MYSQL教程Mysql递归查询树型结构实现代码》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读