您好,欢迎访问一九零五行业门户网

Mysql递归查询

在oracle 中我们知道有一个 hierarchical queries 通过connect by 我们可以方便的查了所有当前节点下的所有子节点。但是,在mysql的目前版本中还没有对应的函数!!! 下面在java中实现了mysql的递归查询: 1、递归的类 package cn.edu.nuc.maven.maventest;
在oracle 中我们知道有一个 hierarchical queries 通过connect by 我们可以方便的查了所有当前节点下的所有子节点。但是,在mysql的目前版本中还没有对应的函数!!!
下面在java中实现了mysql的递归查询:
1、递归的类
package cn.edu.nuc.maven.maventest;
import java.sql.connection;
import java.sql.statement;
import java.util.arraylist;
import java.util.list;
public class hquery {
static connection conn;
static statement st;
/**
* 层次查询
*/
public static void main(string[] args) { 
test_getsortlist();
    }
public static void test_getsortlist() {
list sortlist = new arraylist();
getsortlist(sortlist, 0l, 0); //起始根节点id为0,等级为0
for(product bean: sortlist){
string str = ;
for(int i=0;istr +=——;
}
system.out.println(str+bean.getid() + + bean.getparentid() + + bean.getname());
}
}
/**
* 查询分类的树型结构
*/
public static void getsortlist(list sortlist, long parentid,int level){
product bean = null;   
list list = new arraylist();   
string sql = select * from product s where s.parentid = +parentid;
try{   
system.out.println(sql:+sql);     
list = (list)dbutils.query4listbean(sql, new product().getclass());//每次查询出上级为的分类 
system.out.println(list.size());
if(list != null && list.size() > 0){   
for(int i=0;ibean = (product)list.get(i);  
bean.setlevel(level+1);//添加等级字段
sortlist.add(bean);   
getsortlist(sortlist,bean.getid(),level+1);   //递归查询
}   
}else{   
level--;
}
}catch(exception e){   
e.printstacktrace();   
}   

}
2、dbutils封装类:
package cn.edu.nuc.maven.maventest;
import java.sql.connection;
import java.sql.drivermanager;
import java.sql.sqlexception;
import java.util.list;
import java.util.map;
import org.apache.commons.dbutils.dbutils;
import org.apache.commons.dbutils.queryrunner;
import org.apache.commons.dbutils.handlers.arrayhandler;
import org.apache.commons.dbutils.handlers.arraylisthandler;
import org.apache.commons.dbutils.handlers.beanhandler;
import org.apache.commons.dbutils.handlers.beanlisthandler;
import org.apache.commons.dbutils.handlers.columnlisthandler;
import org.apache.commons.dbutils.handlers.keyedhandler;
import org.apache.commons.dbutils.handlers.maphandler;
import org.apache.commons.dbutils.handlers.maplisthandler;
import org.apache.commons.dbutils.handlers.scalarhandler;
public class dbutils {
static connection conn =null;
static string jdbcurl =jdbc:mysql://172.30.204.163:3306/crm;
static string jdbcdriver =com.mysql.jdbc.driver;
static queryrunner qrunner = null;
static {
dbutils.loaddriver(jdbcdriver);
try {
conn = drivermanager.getconnection(jdbcurl, crm, crm);
conn.setautocommit(false);//关闭自动提交
qrunner = new queryrunner();
} catch (exception e) {
e.printstacktrace();
}
}
public static list query4listbean(string sql,class clazz) throws classnotfoundexception, sqlexception {
list lbean = (list) qrunner.query(conn,
sql, 
new beanlisthandler(clazz));//cn.edu.nuc.maven.maventest.product
return lbean;
}
}
3、实体类:(注:在表中并没有level这一列)
package cn.edu.nuc.maven.maventest;
public class product {
private long id;
private long parentid;
private string name;
private string note;
private int level;
。。。
}
4、表结构:
运行结果:
——1 0 产品a
————2 1 产品a-1
————3 1 产品a-2
——4 0 产品b
————5 4 产品b-1
————6 4 圣达菲
其它类似信息

推荐信息