《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全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/11587.html