拼接树结构 (一)

2014-11-24 10:55:35 · 作者: · 浏览: 2

在DRP开发中,遇见这样一个需求:地域分区,先分为大区,大区下有省,省下有城市,需要在模型中组装一个树结构,然后显示到jsp中,以下是一个实现的方法。

ClientTreeReader

[java]
/**
* 递归读取分销商树
*
* 第四步:采用div生成树形结构
* @param conn 连接
* @param id
* @param level 层次
*/
private void readClientTree(Connection conn, int id, int level)
throws SQLException {
String sql = "select * from t_client where pid= ";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
rs = pstmt.executeQuery();
while (rs.next()) {
sbTreeHTML.append("

");
sbTreeHTML.append("\n");
for (int i=0; i sbTreeHTML.append("");
sbTreeHTML.append("\n");
}
//if ("N".equals(rs.getString("is_leaf"))) {
if (Constants.NO.equals(rs.getString("is_leaf"))) {
sbTreeHTML.append("\"展开\"");
sbTreeHTML.append("\n");
sbTreeHTML.append("");
sbTreeHTML.append("\n");
sbTreeHTML.append("" + rs.getString("name") + "");
sbTreeHTML.append("\n");
sbTreeHTML.append("
");
sbTreeHTML.append("\n");
readClientTree(conn, rs.getInt("id"), level + 1);
sbTreeHTML.append("
");
sbTreeHTML.append("\n");
}else {
sbTreeHTML.append("");
sbTreeHTML.append("\n");
sbTreeHTML.append("");
sbTreeHTML.append("\n");
//if ("Y1".equals(rs.getString("is_client"))) {
if (Constants.YES.equals(rs.getString("is_client"))) {
sbTreeHTML.append("" + rs.getString("name") + "");
}else {
sbTreeHTML.append("" + rs.getString("name") + "");
}
sbTreeHTML.append("\n");
}
sbTreeHTML.append("
");
sbTreeHTML.append("\n");
}
}finally {
DbUtil.close(rs);
DbUtil.close(pstmt);
}
}

/**
* 递归读取分销商树
*
* 第四步:采用div生成树形结构
* @param conn 连接
* @param id
* @param level 层次
*/
private void readClientTree(Connection conn, int id, int level)
throws SQLException {
String sql = "select * from t_client where pid= ";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
rs = pstmt.executeQuery();
while (rs.next()) {
sbTreeHTML.append("

");
sbTreeHTML.append("\n");
for (int i=0; i sbTreeHTML.append("");
sbTreeHTML.append("\n");
}
//if ("N".equals(rs.getString("is_leaf"))) {
if (Constants.NO.equals(rs.getString("is_leaf"))) {
sbTreeHTML.append("\"展开\"");
sbTreeHTML.append("\n");
sbTreeHTML.append("");
sbTreeHTML.append("\n");
sbTreeHTML.append("" + rs.getString("name") + "");
sbTreeHTML.append("\n");
sbTreeHTML.append("
");
sbTreeHTML.append("\n");