Mybatis+Mysql&Oracle再帰クエリー



プリアンブル:メニューなどの再帰クエリーによく使用されます.一般的にはztreeでメニューを実装しますが、データクエリーでは再帰文が必要です.
1、建表:
create table menu{
	menu_Id  varchar(31),
	menu_name varchar(31),
	menu_level char(1),
	parent_Id varchar(31)
}

2、JavaBeanを建てる

package org.gtiles.components.courseinfo.unit.dao;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName Menu
 * @Description: TODO(              )
 * @author huguangjun
 * @date 2016 6 28    7:52:41
 */
public class Menu {
	public String menuId;
	public String menuName;
	public String menuLevel;
	public String parentId;
	public List childList = new ArrayList();
	public String getMenuId() {
		return menuId;
	}
	public void setMenuId(String menuId) {
		this.menuId = menuId;
	}
	public String getMenuName() {
		return menuName;
	}
	public void setMenuName(String menuName) {
		this.menuName = menuName;
	}
	public String getMenuLevel() {
		return menuLevel;
	}
	public void setMenuLevel(String menuLevel) {
		this.menuLevel = menuLevel;
	}
	public String getParentId() {
		return parentId;
	}
	public void setParentId(String parentId) {
		this.parentId = parentId;
	}
	public List getChildList() {
		return childList;
	}
	public void setChildList(List childList) {
		this.childList = childList;
	}
	

}

3、orcleの再帰クエリ文
select t.id AS menuid,t.menu_name AS menuName,t.Parent_Id AS paterId from aut_menu_t t 
where 1=1 START WITH  t.menu_id='root'  connect by  t.Parent_Id=  PRIOR t.menu_id

4、mybatis+mysql再帰クエリーを実現
	
	 
	 
	 
	 	
	 	
	 	
	 	
	 
	 
	 
	 

Javaプログラムでデータを再カプセル化しないようにmybatis xmlファイルにデータをカプセル化
5、ページ上でデータを読み取る場合、ここではfreemarkerを列子とする
 
	${menu.menuName}
 	
		${menuChild.menuName}
	

 
以上はデータベースレベルで処理したが,高同時性では効率が低い.javaを使用してメモリでの処理も可能