oracle转mysql,start with树结构用Java实现

/**
 *
 * @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;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值