/**
*
* @param tableName 表名
* @param idColum id列名
* @param pidColum 父id列名
* @param serchId 查询参数id
* @param displayCloum 需要查询出的列数组,如果传入是null,默认查询id列
* @return Map<String,String></> 返回查询结果Map<列名,列值和(,隔开)>
*/
public Map<String,String> queryTreeChildren(String tableName,String idColum,String pidColum,String serchId,String[] displayCloum){
StringBuffer sql = new StringBuffer();
sql.append("select ");
sql.append(idColum+","+pidColum+",");
List<Map> tableDatas = new ArrayList<Map>();
if(displayCloum.length>0){
for(int i=0;i<displayCloum.length;i++){
sql.append(displayCloum[i]+",");
}
}
sql.deleteCharAt(sql.length()-1);
sql .append(" from "+tableName);
tableDatas=this.find(sql.toString());
sql.append(" where "+idColum+"='"+serchId+"'");
List<Map<String,String>> parentSelf = this.find(sql.toString());
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
Map<String,String> map = new HashMap<String,String>();
list.addAll(parentSelf);
list.addAll(createChildTreeStruts( idColum, pidColum,tableDatas, serchId));
for(Map.Entry<String,String> entry:list.get(0).entrySet()){
map.put(entry.getKey(),"");
}
for(int i=0;i<list.size();i++){
for (Map.Entry<String,String> entry : list.get(i).entrySet()) {
map.put(entry.getKey(),map.get(entry.getKey())+","+entry.getValue());
}
}
for(Map.Entry<String,String> entry:map.entrySet()){
map.put(entry.getKey(),entry.getValue().substring(1,entry.getValue().length()));
}
return map;
}
public List<Map<String,String>> createChildTreeStruts(String idColum,String pidColum,List<Map> tableDatas,String serchId){
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
for(int i=0;i<tableDatas.size();i++){
pidColum = pidColum.toLowerCase();
if(serchId.equals(tableDatas.get(i).get(pidColum))){
list.add(tableDatas.get(i));
list.addAll(createChildTreeStruts(idColum,pidColum,tableDatas,tableDatas.get(i).get(idColum).toString()));
}
}
return list;
}
public Map<String,String> queryTreeParent(String tableName,String idColum,String pidColum,String serchId,String[] displayCloum){
StringBuffer sql = new StringBuffer();
sql.append("select ");
sql.append(idColum+","+pidColum+",");
List<Map> tableDatas = new ArrayList<Map>();
if(displayCloum.length>0){
for(int i=0;i<displayCloum.length;i++){
sql.append(displayCloum[i]+",");
}
}
sql.deleteCharAt(sql.length()-1);
sql .append(" from "+tableName);
tableDatas=this.find(sql.toString());
List<Map<String,String>> list = createParentTreeStruts( idColum, pidColum,tableDatas, serchId);
//list.remove(0);
Map<String,String> map = new HashMap<String,String>();
for(Map.Entry<String,String> entry:list.get(0).entrySet()){
map.put(entry.getKey(),"");
}
for(int i=0;i<list.size();i++){
for (Map.Entry<String,String> entry : list.get(i).entrySet()) {
map.put(entry.getKey(),map.get(entry.getKey())+","+entry.getValue());
}
}
for(Map.Entry<String,String> entry:map.entrySet()){
map.put(entry.getKey(),entry.getValue().substring(1,entry.getValue().length()));
}
return map;
}
public List<Map<String,String>> createParentTreeStruts(String idColum,String pidColum,List<Map> tableDatas,String serchId){
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
for(int i=0;i<tableDatas.size();i++){
pidColum = pidColum.toLowerCase();
if(serchId.equals(tableDatas.get(i).get(idColum))){
list.add(tableDatas.get(i));
if(tableDatas.get(i).get(pidColum)!=null){
list.addAll(createParentTreeStruts(idColum,pidColum,tableDatas,tableDatas.get(i).get(pidColum).toString()));
}
}
}
return list;
}
oracle转mysql,start with树结构用Java实现
最新推荐文章于 2021-02-25 14:00:53 发布