文字列のSQLは= "?s.step_typeの昇順で= s.step_dept_idため事前s.step_idで接続= s.step_idとSTS_MALFUNC_SOLUTION sの最初から選択します*";
これは、現在のノード(のクエリである s.step_id = (現在のノードを含む)すべての子孫ノードの)と昇順にソート。
// 菜单树的数据结构 パブリック クラスGoJsData { プライベート整数ID。 プライベート文字列のテキスト。 プライベート整数サイズ。 プライベート文字列の色。 プライベート文字列の重み。 プライベートリスト<GoJsData> =原因新しいのArrayList <GoJsData> (); //子节点集合 公共 GoJsData(整数ID、文字列、テキスト、整数サイズ、文字色、文字列重み、リスト<GoJsData> 原因){ スーパー()。 この .ID = ID。 このは.text = テキスト。 この.size = サイズ。 この .color = 色。 この .weight = 重量; これは = .causes 原因。 } パブリックGoJsData(){ スーパー()。 }
}
具体的には、以下のように:
@Test 公共 ボイド含有量()スローにIOException { // 1。查询数据STEP_ID:当前节点ID; STEP_DEPT_ID:父节点ID 文字列のsql = "?s.step_idとSTS_MALFUNC_SOLUTIONの開始から= s.step_typeの昇順で前s.step_id = s.step_dept_id順で接続*選択" ; リスト <地図<文字列、オブジェクトリスト>> = baseDao.queryForList(SQL、新しいオブジェクト[] { "11000" })。 // 2。剥离当前节点、创建根数据 GoJsData G = NULL ; 用(MAP <文字列、OBJECT> マップ:リスト){ 文字列pstepId = String.valueOf(map.get( "STEP_DEPT_ID")); もし(Integer.valueOf(pstepId)== 1 ){ G = 新しい GoJsData(Integer.valueOf(String.valueOf(map.get( "STEP_ID" )))、 String.valueOf(map.get( "STEP_CONTENT")) 、18、 "赤"、 "太字"、 新規のArrayList <GoJsData> ()); list.remove(マップ) 破ります; } } // 3。递归形成最终树数据 DD(リスト、G)。 System.out.println(JSONObject.toJSONString(G))。 } // 递归操作 パブリック GoJsDataのDD(一覧<地図<文字列、オブジェクト>>リスト、{GoJsData G) のための(MAP <文字列、OBJECT> マップ:リスト){ int型 pstepId = Integer.valueOf(String.valueOf(map.get( "STEP_DEPT_ID" )))。 System.out.println(pstepId)。 もし(g.getId()== pstepId){ GoJsData GJ = 新しい GoJsData(Integer.valueOf(String.valueOf(map.get( "STEP_ID" )))、 String.valueOf(map.get( "STEP_CONTENT")) 、14、 "赤"、 "太字"、 新規のArrayList <GoJsData> ()); g.getCauses()(GJ)を追加します。 DD(リスト、GJ)。 } リターングラム。 }