悟心

成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。 上人生的旅途罢。前途很远,也很暗。然而不要怕。不怕的人的面前才有路。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  93 随笔 :: 1 文章 :: 103 评论 :: 0 Trackbacks

 

BaseDao

 package com.common;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Common implements ICommon {

 //driver
 String classStr="oracle.jdbc.driver.OracleDriver";
 //connection
 String connStr="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
 //username
 String name="lw";
 //password
 String password="admin";
 

 //transact add/delete/update method
 public boolean tsg(String sql){
  boolean b=false;
  try {
   //loading driver
   Class.forName(classStr);
   //create connection
   Connection conn=DriverManager.getConnection(connStr,name,password);
   //create transact SQL object
   Statement sta=conn.createStatement();
   //transact SQL
   sta.executeUpdate(sql);
   //close sta
   sta.close();
   //close conn
   conn.close();
   //set b true
   b=true;
  } catch (SQLException e) {
   e.printStackTrace();
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  }
  return b;
 }
 
 //transact select
 public ResultSet select(String sql){
  try {
   Class.forName(classStr);
   
   Connection conn=DriverManager.getConnection(connStr,name,password);
   
   Statement sta=conn.createStatement();
   
   ResultSet rs=sta.executeQuery(sql);
   
   return rs;
  } catch (Exception e) {
   // TODO: handle exception
  }
  return null;
 }
 
}


DemoDaoImpl

package com.demo.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.demo.bean.Dept;
import com.demo.common.BaseDaoImpl;
import com.demo.common.IBaseDao;

public class DemoDaoImpl implements IDemoDao {

 private IBaseDao baseDao = new BaseDaoImpl();

 public Dept queryDemoById(int id) {

  String sql = "select * from dept where did=" + id;

  ResultSet rs = baseDao.query(sql);

  Dept dept = new Dept();

  try {
   while (rs.next()) {
    dept.setDid(rs.getInt(1));
    dept.setDname(rs.getString(2));
    dept.setParentid(rs.getInt(3));
   }
  } catch (SQLException e) {
   e.printStackTrace();
  }

  return dept;
 }

 public List<Dept> queryDemos(int id) {

  String sql = "select * from dept where parentid=" + id;

  ResultSet rs = baseDao.query(sql);

  List<Dept> list = new ArrayList<Dept>();

  try {
   while (rs.next()) {
    Dept dept = new Dept();
    dept.setDid(rs.getInt(1));
    dept.setDname(rs.getString(2));
    dept.setParentid(rs.getInt(3));
    list.add(dept);
   }
  } catch (SQLException e) {
   e.printStackTrace();
  }

  return list;
 }

 public static void main(String[] args) {
  IDemoDao dao = new DemoDaoImpl();
  Dept d = dao.queryDemoById(1);
  System.out.println(d);
 }
}

DemoServImpl

package com.demo.serv;

import java.util.List;

import com.demo.bean.Dept;
import com.demo.dao.DemoDaoImpl;
import com.demo.dao.IDemoDao;

public class DemoServImpl implements IDemoServ {

 private IDemoDao demoDao = new DemoDaoImpl();

 private static String htmlStr="";
 
 private void search(int id) {
  List<Dept> list = demoDao.queryDemos(id);
  htmlStr+="<ul>";
  for (Dept dept : list) {
   htmlStr+="<li>";
   htmlStr+="<a href='"+dept.getDid()+"'>"+dept.getDname()+"</a>";
   htmlStr+="</li>";
   search(dept.getDid());
  }
  htmlStr+="</ul>";
 }
 
 public String resHTML(int id){
  htmlStr="";
  search(id);
  return htmlStr;
 }
}

DemoServlet

 

package com.demo.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.demo.serv.DemoServImpl;
import com.demo.serv.IDemoServ;

public class DemoServlet extends HttpServlet {

 private IDemoServ demoserv = new DemoServImpl();

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doPost(request, response);
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  request.setCharacterEncoding("utf-8");
  request.setCharacterEncoding("utf-8");
  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  int id = Integer.parseInt(request.getParameter("id"));
  String reshtml = demoserv.resHTML(id);
  out.write(reshtml);
  out.flush();
  out.close();
 }

}

posted on 2009-11-15 00:06 艾波 阅读(2282) 评论(10)  编辑  收藏 所属分类: Application

评论

# re: 递归树(新思路)[JDBC+Servlet+javaBean] 2009-11-16 09:59 father
什吗玩意!!!!!  回复  更多评论
  

# re: 递归树(新思路)[JDBC+Servlet+javaBean](新手版高手勿进) 2009-11-18 13:11 艾波
你是高手嘛,当然不屑啊@father
  回复  更多评论
  

# re: 递归树(新思路)[JDBC+Servlet+javaBean](新手版高手勿进)[未登录] 2009-11-18 16:37 onkyo
这样递归错是没错,但是太过理想化了, 在实际应用中基本很少能用上这样的代码。

设想一下比如一张表保存了所有工料信息(article-component) 里面有100万条数据记录。 如果使用楼主的算法耗时过长而且很可能out of memory。

其实就用一句SQL就可以了,不需要在程序里面递归。
既然楼主用了Oracle那就了解一下start with connect by 的用法吧  回复  更多评论
  

# re: 递归树(新思路)[JDBC+Servlet+javaBean](新手版高手勿进) 2009-11-18 20:48 艾波
@onkyo
嗯 学习了 多谢指教啊!我有个问题想问你,要是不在oracle中,在sql2005或者mysql中怎么弄啊  回复  更多评论
  

# re: 递归树(新思路)[JDBC+Servlet+javaBean](新手版高手勿进)[未登录] 2009-11-18 22:41 onkyo
在postgresql 数据库的源代码contrib文件夹下面, 有一个模块:tablefunc

postgresql 把 connectby 做成了一个函数。

对于sql2005和mysql你可以参考一下, 自己写一个函数。

在数据库里面做递归比在程序里面至少快2个数量级  回复  更多评论
  

# re: 递归树(新思路)[JDBC+Servlet+javaBean](新手版高手勿进) 2009-11-18 23:13 艾波
@onkyo
嗯 谢谢啊 是不是在数据库里面写个存储过程来处理这个啊  回复  更多评论
  

# re: 递归树(新思路)[JDBC+Servlet+javaBean](新手版高手勿进)[未登录] 2009-11-19 14:07 onkyo
是的.

如何写这个储存过程:
MySQL 可以参考 http://qieqie.javaeye.com/blog/115293
SQL2005 可以参考 http://technet.microsoft.com/de-de/library/cc917573%28en-us%29.aspx  回复  更多评论
  

# re: 递归树(新思路)[JDBC+Servlet+javaBean](新手版高手勿进) 2009-11-21 08:46 艾波
@onkyo
嗯 多谢指教 太感谢你了 我可不可以加你QQ啊 我想多向你请教些技术上面的问题  回复  更多评论
  

# re: 递归树(新思路)[JDBC+Servlet+javaBean](新手版高手勿进) 2010-01-15 21:25 来如风
不要一次全加载,用懒加载  回复  更多评论
  

# re: 递归树(新思路)[JDBC+Servlet+javaBean](新手版高手勿进) 2010-01-18 16:36 艾波
嗯 谢谢指教@来如风
  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: