S2SH整合构建Ext动态树(带右键菜单操作)

   什么是ExtJS? 要了解什么是ExtJS,得先了解一下什么是YUI。

  YUI(Yahoo! UI Library )是一个开源的JavaScript库,与Ajax、DHTML和DOM等技术一起使用可以用于创建富有交互性的Web应用,它还包含丰富的CSS资源。

  Ext最初是YUI的一个扩展,然而,它现在也可以扩展自JQuery和Prototype。自1.1版开始,Ext已经可以独立运行,不需要依赖于那些外部库,虽然它仍然是可被集成的一个选项。

  现在,Ext 2.0版可以使用许多不同的基础库,例如YUI、JQuery和Prototype,或者是可以独立的运行。

  ExtJS 是一个非常棒的Ajax框架,可以用来开发富有华丽外观的富客户端应用,能使b/s应用更加具有活力。ExtJS是一个用javascript编写,与后 台技术无关的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用程序中。

  不多说,先看数据库的设计:

 

ContractedBlock.gif ExpandedBlockStart.gif SQLCode

drop table if exists exttree;
CREATE TABLE exttree(
  id 
bigint(11) auto_increment primary key,
  parentId 
bigint(11NOT NULL,
  title 
varchar(255default NULL,
  
number bigint(11default NULL,
  leaf 
int(4default NULL,
  url 
varchar(255default NULL   
);

insert into `exttree` values(null,-1,'Root',0,0,null);
insert into `exttree` values(null,1,'音乐',0,0,null);
insert into `exttree` values(null,2,'轻金属',1,1,null);
insert into `exttree` values(null,2,'重金属',2,1,null);
insert into `exttree` values(null,2,'R&B',3,1,null);

insert into `exttree` values(null,1,'体育',0,0,null);
insert into `exttree` values(null,6,'篮球',1,1,null);
insert into `exttree` values(null,6,'足球',2,1,null);
insert into `exttree` values(null,6,'体操',3,1,null);

insert into `exttree` values(null,1,'美食',0,0,null);
insert into `exttree` values(null,10,'中国菜',0,0,null);
insert into `exttree` values(null,11,'青椒找肉',0,1,null);
insert into `exttree` values(null,10,'日本菜',0,0,null);
insert into `exttree` values(null,13,'河夫烤鱼',0,1,null);
insert into `exttree` values(null,10,'法国菜',0,0,null);
insert into `exttree` values(null,15,'爆炒蜗牛',0,1,null);

  字段number为排列位置 1为最上(子节点),leaf表示是子节点或父节点。

  后台数据处理接口如下:

 

ContractedBlock.gif ExpandedBlockStart.gif JavaCode
package com.exttree.dao;

import java.util.List;

import com.exttree.pojo.Exttree;

ExpandedBlockStart.gifContractedBlock.gif
/** *//**
 * Ext访问数据库接口封装
 * 
 * 
@author BruceLeey
 * 
 
*/

ExpandedBlockStart.gifContractedBlock.gif
public interface IExtTreeDemo {

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 根据ID查找对象
     * 
     * 
@param id
     * 
@return
     * 
@throws Exception
     
*/

    
public Exttree findById(Long id) throws Exception;

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 根据父节点查询所有子节点列表
     * 
     * 
@param parentId
     * 
@return
     * 
@throws Exception
     
*/

    
public List<Exttree> findChildById(Long parentId) throws Exception;

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 保存节点
     * 
     * 
@param node
     * 
@throws Exception
     
*/

    
public void save(Exttree node) throws Exception;

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 根据ID删除子节点
     * 
     * 
@param node
     * 
@throws Exception
     
*/

    
public void removeChildById(Exttree node) throws Exception;

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 修改节点
     * 
     * 
@param node
     * 
@throws Exception
     
*/

    
public void modify(Exttree node) throws Exception;

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 执行繁杂的修改语句
     * 
     * 
@param hql
     * 
@throws Exception
     
*/

    
public void modifyBySQL(String hql) throws Exception;

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 移除节点
     * 
     * 
@param id
     * 
@throws Exception
     
*/

    
public void ajaxRemoveNode(Long id) throws Exception;

}

 实现如下:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
package com.exttree.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.exttree.pojo.Exttree;

public class ExtTreeDemoImpl extends HibernateDaoSupport implements
ExpandedBlockStart.gifContractedBlock.gif        IExtTreeDemo 
{

ExpandedSubBlockStart.gifContractedSubBlock.gif    
public Exttree findById(Long id) throws Exception {
        List
<Exttree> list = this.getHibernateTemplate().find(
                
"from Exttree ext where ext.id=?", id);
        
return list.size() >= 1 ? list.get(0) : null;
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public List<Exttree> findChildById(Long parentId) throws Exception {

        
return this.getHibernateTemplate().find(
                
"from Exttree ext where ext.parentId=?", parentId);
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public void modify(Exttree node) throws Exception {

        
this.getHibernateTemplate().merge(node);  //相当于SaveOrUpdate

    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public void removeChildById(Exttree node) throws Exception {

        String hql 
= "delete from Exttree tree where tree.id="+node.getId();
        Session session 
= this.getHibernateTemplate().getSessionFactory()
                .openSession();
        Transaction tm 
= session.beginTransaction();
        tm.begin();
        Query query 
= session.createQuery(hql);
        query.executeUpdate();
        tm.commit();
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public void save(Exttree node) throws Exception {

        
this.getHibernateTemplate().save(node);

    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public void modifyBySQL(String hql) throws Exception {
        Session session 
= this.getHibernateTemplate().getSessionFactory()
                .openSession();
        Transaction tm 
= session.beginTransaction();
        tm.begin();
        Query query 
= session.createSQLQuery(hql);
        query.executeUpdate();
        tm.commit();
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public void ajaxRemoveNode(Long id) throws Exception {
        List
<Exttree> list = this.findChildById(id);
ExpandedSubBlockStart.gifContractedSubBlock.gif        
for (Exttree object : list) // 移除子节点
            ajaxRemoveNode(object.getId());
        }

        Exttree tree 
= new Exttree(); // 需改进
        tree.setId(id);
        
this.removeChildById(tree); // 父节点始终会移除
    }


}

 需要注意的是,如果将removeChildById改成这样:

 

ExpandedBlockStart.gif ContractedBlock.gif public   void  removeChildById(Exttree node)  throws  Exception  {

        
this.getHibernateTemplate().delete(node);
    }

 

  将会报此异常:a different object with the same identifier value was already associated with the session
  内存中存在两个实例,但是不是同一个对象,因此Hibernate不知道该删除哪一个,因为在删除之前已构建一个实例,删除时再传递需要删除的对象,因为内存地址不一样,因此报这样的错误,解决办法是重新打开一个Session或者清空当前Session。

  修改时也是如此,可使用Hibernate的getHibernateTemplate().merge(node);

  业务层接口如下:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
package com.exttree.service;

import java.util.List;

import com.exttree.pojo.Exttree;

ExpandedBlockStart.gifContractedBlock.gif
/** *//**
 * EXTTree 业务逻辑接口封装
 * 
 * 
@author BruceLeey
 * 
 
*/

ExpandedBlockStart.gifContractedBlock.gif
public interface IExtTreeDemoService {

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 异步修改标题
     * 
     * 
@param id
     * 
@param title
     * 
@throws Exception
     
*/

    
public void ajaxModifyTitle(Long id, String title) throws Exception;

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 异步移除父节点
     * 
     * 
@param parentId
     * 
@throws Exception
     
*/

    
public void ajaxRemoveParentById(Long parentId) throws Exception;

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 异步移动节点
     * 
     * 
@param id
     * 
@param oldParentId
     * 
@param newParentId
     * 
@param nodeIndex
     * 
@throws Exception
     
*/

    
public void ajaxMoveNode(Long id, Long oldParentId, Long newParentId,
            Long nodeIndex) 
throws Exception;

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 节点向上
     * 
     * 
@param parentId
     * 
@param minIndex
     * 
@param maxIndex
     * 
@throws Exception
     
*/

    
public void upNode(int parentId, int minIndex, int maxIndex)
            
throws Exception;

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 节点向下
     * 
     * 
@param parentId
     * 
@param minIndex
     * 
@param maxIndex
     * 
@throws Exception
     
*/

    
public void downNode(int parentId, int minIndex, int maxIndex)
            
throws Exception;

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 根据ID查找对象
     * 
     * 
@param id
     * 
@return
     * 
@throws Exception
     
*/

    
public Exttree findById(Long id) throws Exception;

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 根据父节点查询所有子节点列表
     * 
     * 
@param parentId
     * 
@return
     * 
@throws Exception
     
*/

    
public List<Exttree> findChildById(Long parentId) throws Exception;

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 修改节点
     * 
     * 
@param node
     * 
@throws Exception
     
*/

    
public void modify(Exttree node) throws Exception;
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 保存节点
     * 
     * 
@param node
     * 
@throws Exception
     
*/

    
public void save(Exttree node) throws Exception;

}

 

  实现:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
package com.exttree.service.impl;

import java.util.List;
import com.exttree.dao.IExtTreeDemo;
import com.exttree.pojo.Exttree;
import com.exttree.service.IExtTreeDemoService;

ExpandedBlockStart.gifContractedBlock.gif
public class ExtTreeDemoServiceImpl implements IExtTreeDemoService {

    
private IExtTreeDemo treeDAO = null;

ExpandedSubBlockStart.gifContractedSubBlock.gif    
public IExtTreeDemo getTreeDAO() {
        
return treeDAO;
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public void setTreeDAO(IExtTreeDemo treeDAO) {
        
this.treeDAO = treeDAO;
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public void ajaxModifyTitle(Long id, String title) throws Exception {
        Exttree node 
= treeDAO.findById(id);
ExpandedSubBlockStart.gifContractedSubBlock.gif        
if (!title.equals(node.getTitle())) // 当节点标题确认修改了后调用
            node.setTitle(title);
            treeDAO.modify(node);
        }


    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public void ajaxRemoveParentById(Long parentId) throws Exception {
        Exttree obj 
= treeDAO.findById(parentId);
        
this.downNode(obj.getParentId().intValue(), obj.getNumber().intValue(),
                
-1);
        treeDAO.ajaxRemoveNode(obj.getId()); 
// 移除父节点
    }


    
public void ajaxMoveNode(Long id, Long oldParentId, Long newParentId,
ExpandedSubBlockStart.gifContractedSubBlock.gif            Long nodeIndex) 
throws Exception {
        Exttree node 
= treeDAO.findById(id);
        
int minIndex = node.getNumber().intValue();
        
int maxIndex = nodeIndex.intValue();
ExpandedSubBlockStart.gifContractedSubBlock.gif        
if (oldParentId == newParentId && minIndex != maxIndex) {
ExpandedSubBlockStart.gifContractedSubBlock.gif            
if (minIndex < maxIndex) {

                
this.downNode(oldParentId.intValue(), minIndex, maxIndex);

ExpandedSubBlockStart.gifContractedSubBlock.gif            }
 else if (minIndex > maxIndex) {

                maxIndex 
= minIndex;
                minIndex 
= nodeIndex.intValue();
                
this.upNode(oldParentId.intValue(), minIndex, maxIndex);
            }


            node.setNumber(nodeIndex);
            treeDAO.modify(node);
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
if (oldParentId != newParentId) {

            
this.downNode(oldParentId.intValue(), minIndex, -1);

            
this.upNode(newParentId.intValue(), maxIndex, -1);

            node.setNumber(nodeIndex);
            node.setParentId(newParentId);
            treeDAO.modify(node);
        }

    }


    
public void downNode(int parentId, int minIndex, int maxIndex)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
throws Exception {
        StringBuffer hql 
= new StringBuffer(
                
"update exttree set number=number-1 where parentId = ");
        hql.append(parentId);
ExpandedSubBlockStart.gifContractedSubBlock.gif        
if (maxIndex != -1{
            hql.append(
" and number <= ");
            hql.append(maxIndex);
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
if (minIndex != -1{
            hql.append(
" and number > ");
            hql.append(minIndex);
        }

        treeDAO.modifyBySQL(hql.toString());
    }


    
public void upNode(int parentId, int minIndex, int maxIndex)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
throws Exception {
        StringBuffer hql 
= new StringBuffer(
                
"update exttree set number=number+1 where parentId = ");
        hql.append(parentId);
ExpandedSubBlockStart.gifContractedSubBlock.gif        
if (maxIndex != -1{
            hql.append(
" and number < ");
            hql.append(maxIndex);
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
if (minIndex != -1{
            hql.append(
" and number >= ");
            hql.append(minIndex);
        }

        treeDAO.modifyBySQL(hql.toString());
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public Exttree findById(Long id) throws Exception {
        
return treeDAO.findById(id);
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public List<Exttree> findChildById(Long parentId) throws Exception {
        
return treeDAO.findChildById(parentId);
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public void modify(Exttree node) throws Exception {
        treeDAO.modify(node);
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public void save(Exttree node) throws Exception {
        treeDAO.save(node);

    }

}

 

 主要的数据访问与业务写好之后,接下来将Web的访问控制写好:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
package com.exttree.web;

import org.apache.struts2.ServletActionContext;

import com.exttree.pojo.Exttree;
import com.exttree.service.IExtTreeDemoService;

ExpandedBlockStart.gifContractedBlock.gif
/** *//**
 * Web后端控制器
 * 
 * 
@author BruceLeey
 * 
 
*/

ExpandedBlockStart.gifContractedBlock.gif
public class ExtTreeAction {

    
private Exttree extTree = null;

    
private IExtTreeDemoService service = null;

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 添加节点
     * 
     * 
@return
     
*/

ExpandedSubBlockStart.gifContractedSubBlock.gif    
public String saveNode() throws Exception {
ExpandedSubBlockStart.gifContractedSubBlock.gif        
if (!"".equals(extTree.getId()) && null != extTree.getId()) {
ExpandedSubBlockStart.gifContractedSubBlock.gif            
if (service.findById(extTree.getId()) == null{

                
return "ERROR";
ExpandedSubBlockStart.gifContractedSubBlock.gif            }
 else {

                service.modify(extTree);
                
return "SUCCESS";
            }

        }

        service.save(extTree);
        
return "SUCCESS";
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 修改节点
     * 
     * 
@return
     
*/

ExpandedSubBlockStart.gifContractedSubBlock.gif    
public String modifyNode() throws Exception {
ExpandedSubBlockStart.gifContractedSubBlock.gif        
if (null != extTree.getId()) {
            ServletActionContext.getRequest().setAttribute(
"obj",
                    service.findById(extTree.getId()));
ExpandedSubBlockStart.gifContractedSubBlock.gif        }
 else {

            ServletActionContext.getRequest().setAttribute(
"obj", extTree);
        }

        
return "EDIT";

    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
     * 异步获取数据
     * 
     * 
@return
     
*/

ExpandedSubBlockStart.gifContractedSubBlock.gif    
public String jsonData() throws Exception {

        ServletActionContext.getRequest().setAttribute(
                
"list",
                service.findChildById(Long.valueOf(ServletActionContext
                        .getRequest().getParameter(
"id"))));
        
return "JSON";
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public IExtTreeDemoService getService() {
        
return service;
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public void setService(IExtTreeDemoService service) {
        
this.service = service;
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public Exttree getExtTree() {
        
return extTree;
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
public void setExtTree(Exttree extTree) {
        
this.extTree = extTree;
    }

}

  Spring配置如下:

 

ContractedBlock.gif ExpandedBlockStart.gif XMLCode
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop
="http://www.springframework.org/schema/aop"
    xmlns:tx
="http://www.springframework.org/schema/tx"
    xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
>


    
<!-- 配置SessionFactory -->
    
<bean id="sessionFactory"
        class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        
<property name="configLocation">
            
<value>classpath:hibernate.cfg.xml</value>
        
</property>
    
</bean>
    
<!-- 配置事务管理器 -->
    
<bean id="transactionManager"
        class
="org.springframework.orm.hibernate3.HibernateTransactionManager">
        
<property name="sessionFactory" ref="sessionFactory"></property>
    
</bean>

    
<!-- 配置事务的传播属性 -->
    
<tx:advice id="txAdvice" transaction-manager="transactionManager">
        
<tx:attributes>
            
<tx:method name="save*" propagation="REQUIRED" />
            
<tx:method name="modify*" propagation="REQUIRED" />
            
<tx:method name="remove*" propagation="REQUIRED" />
            
<tx:method name="ajax*" propagation="REQUIRED" />
            
<tx:method name="*" read-only="true" />
        
</tx:attributes>
    
</tx:advice>
    
<!-- 配置事务的切入点 -->
    
<aop:config>
        
<aop:pointcut id="allMethod"
            expression
="execution(* com.exttree.dao.*.*(..))" />
        
<aop:advisor pointcut-ref="allMethod" advice-ref="txAdvice" />
    
</aop:config>

    
<bean id="treeDAO" class="com.exttree.dao.ExtTreeDemoImpl">
        
<property name="sessionFactory" ref="sessionFactory"></property>
    
</bean>
    
<bean id="treeService"
        class
="com.exttree.service.impl.ExtTreeDemoServiceImpl">
        
<property name="treeDAO" ref="treeDAO"></property>
    
</bean>
    
<bean id="treeAction" class="com.exttree.web.ExtTreeAction"
        scope
="prototype">
        
<property name="service" ref="treeService"></property>
    
</bean>
</beans>

  本例子中使用了DWR作为异步调用服务器方法,DWR框架配置比较简单,因为例子中的对象由Spring托管,因此需要配置DWR与Spring的交互,首先先看Web.xml中的配置

 

ContractedBlock.gif ExpandedBlockStart.gif XMLCode
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>
    
<!-- Spring托管Hibernate的Session -->
    
<filter>
        
<filter-name>sessionFilter</filter-name>
        
<filter-class>
            org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
        
</filter-class>
    
</filter>
    
<filter-mapping>
        
<filter-name>sessionFilter</filter-name>
        
<url-pattern>/*</url-pattern>
    
</filter-mapping>

    
<!-- Struts2的前端控制器 -->
    
<filter>
        
<filter-name>struts2.x</filter-name>
        
<filter-class>
            org.apache.struts2.dispatcher.FilterDispatcher
        
</filter-class>
    
</filter>
    
<filter-mapping>
        
<filter-name>struts2.x</filter-name>
        
<url-pattern>/*</url-pattern>
    
</filter-mapping>
    
<!-- Spring配置文件的读取 -->
    
<context-param>
        
<param-name>contextConfigLocation</param-name>
        
<param-value>/WEB-INF/applicationContext.xml</param-value>
    
</context-param>
    
<listener>
        
<listener-class>
            org.springframework.web.context.ContextLoaderListener
        
</listener-class>
    
</listener>
    
<!-- DWR的配置 -->
    
<servlet>
        
<servlet-name>dwr-invoker</servlet-name>
        
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
        
<init-param>
            
<param-name>debug</param-name>
            
<param-value>true</param-value>
        
</init-param>
        
<init-param>
            
<param-name>
                allowGetForSafariButMakeForgeryEasier
            
</param-name>
            
<param-value>true</param-value>
        
</init-param>
        
<load-on-startup>1</load-on-startup>
    
</servlet>
    
<servlet-mapping>
        
<servlet-name>dwr-invoker</servlet-name>
        
<url-pattern>/dwr/*</url-pattern>
    
</servlet-mapping>
    
<welcome-file-list>
        
<welcome-file>index.jsp</welcome-file>
    
</welcome-file-list>
</web-app>

 

  dwr.xml配置与Spring的交互:

 

ContractedBlock.gif ExpandedBlockStart.gif XMLCode
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr//dwr20.dtd">

<dwr>
    
<allow>
        
<!-- javascript属性为用户调研DWR的实例,这里creator交由Spring监管 -->
        
<create javascript="TreeDWR" creator="spring">
            
<!-- beanName为DWR配置Spring时特定,value值为在applicationContext.xml中配置的bean -->
            
<param name="beanName" value="treeService"></param>
            
<!-- 提供访问的方法 -->
            
<include method="ajaxModifyTitle" />
            
<include method="ajaxRemoveParentById" />
            
<include method="ajaxMoveNode" />
        
</create>
    
</allow>
</dwr>

  将EXTJS的核心JS导入后,需要手动编写JS的业务,代码如下:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
// 全局路径
var basePath = "http://localhost:8080/ext_treedemo";
ExpandedBlockStart.gifContractedBlock.gif
if(typeof(glbRootPath) != "undefined"){
    basePath 
= glbRootPath;
}

// 扩展窗体
ExpandedBlockStart.gifContractedBlock.gif
FormEditWin = function(){
    
var curFormWin;
ExpandedSubBlockStart.gifContractedSubBlock.gif    
return {
        width : 
600,
        height : 
400,
ExpandedSubBlockStart.gifContractedSubBlock.gif        showAddDirWin : 
function(parentNode) {
            
// 显示添加子目录窗口
            var number = parentNode.indexOf(parentNode.lastChild) + 1;
            
var editpage = basePath
                    
+ "/treeAction!modifyNode.action?extTree.parentId="
                    
+ parentNode.id + "&extTree.leaf=0&extTree.number=" + number;
ExpandedSubBlockStart.gifContractedSubBlock.gif            
var window = this.createWin("windirnew""新建目录节点", editpage, function() {
                parentNode.reload();
            }
);
            window.show();
        }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif        showAddLeafWin : 
function(parentNode) {
            
// 显示添加子叶子节点窗口
            var number = parentNode.indexOf(parentNode.lastChild) + 1;
            
var editpage = basePath
                    
+ "/treeAction!modifyNode.action?extTree.parentId="
                    
+ parentNode.id + "&extTree.leaf=1&extTree.number=" + number;
ExpandedSubBlockStart.gifContractedSubBlock.gif            
var window = this.createWin("winleafnew""新建叶子节点", editpage, function() {
                parentNode.reload();
            }
);
            window.show();
        }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif        showEditDirWin : 
function(node) {
            
// 显示目录编辑窗口
            var editpage = basePath
                    
+ "/treeAction!modifyNode.action?extTree.id=" + node.id;
ExpandedSubBlockStart.gifContractedSubBlock.gif            
var window = this.createWin("win" + node.id, node.text, editpage, function() {
                
var nodeparent = node.parentNode;
                
var tree = node.getOwnerTree();
ExpandedSubBlockStart.gifContractedSubBlock.gif                nodeparent.on(
"expand"function(pnode) {
                    tree.getNodeById(node.id).select();
ExpandedSubBlockStart.gifContractedSubBlock.gif                }
this{
                    single : 
true
                }
);
                node.parentNode.reload();
            }
);
            window.show();
        }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif        showEditLeafWin : 
function(node) {
            
// 显示叶子节点编辑窗口
            var editpage = basePath
                    
+ "/treeAction!modifyNode.action?extTree.id=" + node.id;
ExpandedSubBlockStart.gifContractedSubBlock.gif            
var window = this.createWin("win" + node.id, node.text, editpage, function() {
                
var nodeparent = node.parentNode;
                
var tree = node.getOwnerTree();
ExpandedSubBlockStart.gifContractedSubBlock.gif                nodeparent.on(
"expand"function(pnode) {
                    tree.getNodeById(node.id).select();
ExpandedSubBlockStart.gifContractedSubBlock.gif                }
this{
                    single : 
true
                }
);
                node.parentNode.reload();
            }
);
            window.show();
        }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif        createWin : 
function(winId, winTitle, iframePage, closeFun) {
            
// 供各类型窗口创建时调用
            var win = Ext.getCmp(winId);
ExpandedSubBlockStart.gifContractedSubBlock.gif            
if (!win) {
ExpandedSubBlockStart.gifContractedSubBlock.gif                win 
= new Ext.Window({
                    id : winId,
                    title : 
"菜单编辑窗口-" + winTitle,
                    width : 
this.width,
                    height : 
this.height,
                    maximizable : 
true,
                    modal : 
true,
                    html : 
"<iframe width='100%' height='100%' frameborder='0' src='"
                            
+ iframePage + "'></iframe>"
                }
);
                
this.reloadNavNode = closeFun;
            }

            curFormWin 
= win;
            
return win;
        }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif        reloadNavNode : 
function() {
        }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif        close : 
function() {
ExpandedSubBlockStart.gifContractedSubBlock.gif            
if(curFormWin){
                curFormWin.close();
            }

        }

    }

}
();

// 导航树
ExpandedBlockStart.gifContractedBlock.gif
NavTree = function(){
    
var nav;
    
var navEditor;
    
var leafMenu;
    
var dirMenu;
    
var loader;
    
var root;
    
var removeFlag = false;
    
var titleChangeFlag = false;
    
var nodeSelected;
    
var mgr;
ExpandedSubBlockStart.gifContractedSubBlock.gif    
return {
ExpandedSubBlockStart.gifContractedSubBlock.gif        init : 
function(){
ExpandedSubBlockStart.gifContractedSubBlock.gif            
if(!mgr){
                Ext.Msg.alert(
"警告提示","请先通过NavTree.setMgr()设置mgr");
                
return;
            }

ExpandedSubBlockStart.gifContractedSubBlock.gif            
if(!loader){
ExpandedSubBlockStart.gifContractedSubBlock.gif                loader 
= new Ext.tree.TreeLoader({
                    url : basePath 
+ '/treeAction!jsonData.action'
                }
);
ExpandedSubBlockStart.gifContractedSubBlock.gif                loader.on(
'beforeload'function(treeloader, node) {
ExpandedSubBlockStart.gifContractedSubBlock.gif                    treeloader.baseParams 
= {
                        id : node.id,
                        method : 
'tree'
                    }
;
                }
this);
            }

ExpandedSubBlockStart.gifContractedSubBlock.gif            
if(!root){
ExpandedSubBlockStart.gifContractedSubBlock.gif                root 
= new Ext.tree.AsyncTreeNode({
                    id : 
'1',
                    text : 
"BruceLeey's ExtTree"
                }
);
            }

ExpandedSubBlockStart.gifContractedSubBlock.gif            
if(!nav){
ExpandedSubBlockStart.gifContractedSubBlock.gif                nav 
= new Ext.tree.TreePanel({
                    title : 
"左部导航",
                    width : 
232,
                    autoScroll : 
true,
                    animate : 
true,
                    loader : loader,
                    root : root,
                    enableDD : 
true,
ExpandedSubBlockStart.gifContractedSubBlock.gif                    listeners : 
{
ExpandedSubBlockStart.gifContractedSubBlock.gif                        
'click' : function(node, event) {
ExpandedSubBlockStart.gifContractedSubBlock.gif                            
if (node.isLeaf()) {
                                
// 为叶子节点时,点击不进入链接
                                //event.stopEvent();
                                //alert(node.url);
                                 //window.open('http://www.google.com');
                            }

                        }

                    }

                }
);
                
// 添加右键菜单
                nav.on("contextmenu"this.showTreeMenu);
                
// 当节点文本改变时触发事件
ExpandedSubBlockStart.gifContractedSubBlock.gif
                nav.on("textchange"function(node, newText, oldText) {
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
if (!titleChangeFlag && newText != oldText) {
ExpandedSubBlockStart.gifContractedSubBlock.gif                        mgr.ajaxModifyTitle(node.id, newText, 
function(success) {
                            
                                
                            
                        }
);
                    }

                }
);
                
// 当节点移动时触发事件
ExpandedSubBlockStart.gifContractedSubBlock.gif
                nav.on("movenode"function(tree, node, oldParent, newParent, index) {
                    mgr.ajaxMoveNode(node.id, oldParent.id, newParent.id, index);
                }
);
                
// 当节点删除时触发事件
ExpandedSubBlockStart.gifContractedSubBlock.gif
                nav.on("remove"function(tree, parentNode, node) {
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
if (removeFlag) {
                        
                        mgr.ajaxRemoveParentById(node.id);
                    }

                }
);
            }

ExpandedSubBlockStart.gifContractedSubBlock.gif            
if(!navEditor){
ExpandedSubBlockStart.gifContractedSubBlock.gif                navEditor 
= new Ext.tree.TreeEditor(nav, {
                    allowBlank : 
false,
                    ignoreNoChange : 
true,
                    blankText : 
'标题不能为空',
                    selectOnFocus : 
true
                }
);
            }

            
this.setLeafMenu();
            
this.setDirMenu();
        }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif        setMgr : 
function(manager){
            mgr 
= manager;
        }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif        getMgr : 
function(){
            
return mgr;
        }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif        setLeafMenu: 
function(){
            
// 设置叶子菜单
ExpandedSubBlockStart.gifContractedSubBlock.gif
            if(!leafMenu){
ExpandedSubBlockStart.gifContractedSubBlock.gif                leafMenu 
= new Ext.menu.Menu({
ExpandedSubBlockStart.gifContractedSubBlock.gif                    items : [
{
                        text : 
"修改标题",
ExpandedSubBlockStart.gifContractedSubBlock.gif                        handler : 
function() {
                            navEditor.triggerEdit(nodeSelected);
                        }

ExpandedSubBlockStart.gifContractedSubBlock.gif                    }
"-"{
                        text : 
"编辑",
ExpandedSubBlockStart.gifContractedSubBlock.gif                        handler : 
function() {
                            FormEditWin.showEditLeafWin(nodeSelected);
                        }

ExpandedSubBlockStart.gifContractedSubBlock.gif                    }
"-"{
                        text : 
"删除",
                        handler : 
this.delTreeItemComfirm
                    }
]
                }
);
            }

        }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif        setDirMenu: 
function(){
            
// 设置目录菜单
ExpandedSubBlockStart.gifContractedSubBlock.gif
            if(!dirMenu){
ExpandedSubBlockStart.gifContractedSubBlock.gif                dirMenu 
= new Ext.menu.Menu({
ExpandedSubBlockStart.gifContractedSubBlock.gif                    items : [
{
                        text : 
"修改标题",
ExpandedSubBlockStart.gifContractedSubBlock.gif                        handler : 
function() {
                            navEditor.triggerEdit(nodeSelected);
                        }

ExpandedSubBlockStart.gifContractedSubBlock.gif                    }
"-"{
                        text : 
"编辑",
ExpandedSubBlockStart.gifContractedSubBlock.gif                        handler : 
function() {
                            FormEditWin.showEditDirWin(nodeSelected);
                        }

ExpandedSubBlockStart.gifContractedSubBlock.gif                    }
"-"{
                        text : 
"添加叶子节点",
ExpandedSubBlockStart.gifContractedSubBlock.gif                        handler : 
function() {
                            FormEditWin.showAddLeafWin(nodeSelected);
                        }

ExpandedSubBlockStart.gifContractedSubBlock.gif                    }
"-"{
                        text : 
"添加目录节点",
ExpandedSubBlockStart.gifContractedSubBlock.gif                        handler : 
function() {
                            FormEditWin.showAddDirWin(nodeSelected);
                        }

ExpandedSubBlockStart.gifContractedSubBlock.gif                    }
"-"{
                        text : 
"删除",
                        handler : 
this.delTreeItemComfirm
                    }
]
                }
);
            }

        }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif        showTreeMenu : 
function(node, e){
            nodeSelected 
= node;
            nodeSelected.select();
ExpandedSubBlockStart.gifContractedSubBlock.gif            
if (node.isLeaf()) {
                
// 显示叶子节点菜单
                leafMenu.showAt(e.getPoint());
ExpandedSubBlockStart.gifContractedSubBlock.gif            }
 else {
                
// 显示目录节点菜单
                dirMenu.showAt(e.getPoint());
            }

        }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif        delTreeItemComfirm : 
function(){
ExpandedSubBlockStart.gifContractedSubBlock.gif            Ext.Msg.confirm(
"确认删除""确定要删除所选节点吗?"function(btn) {
ExpandedSubBlockStart.gifContractedSubBlock.gif                
if (btn == "yes"{
                    NavTree.delTreeItem();
                }

            }
);
        }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif        delTreeItem : 
function(){
ExpandedSubBlockStart.gifContractedSubBlock.gif            
if (nodeSelected != nav.getRootNode()) {
                removeFlag 
= true;
                nodeSelected.remove();
                removeFlag 
= false;
ExpandedSubBlockStart.gifContractedSubBlock.gif            }
 else {
                Ext.Msg.alert(
"警告""不能删除树的根节点!");
            }

        }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif        show : 
function(){
            nav.render(Ext.getBody());
            nav.getRootNode().toggle();
        }

    }

}
();

// 文档加载完毕执行
ExpandedBlockStart.gifContractedBlock.gif
Ext.onReady(function(){
    Ext.BLANK_IMAGE_URL 
= "../scripts/ext/resources/images/default/s.gif";
ExpandedSubBlockStart.gifContractedSubBlock.gif    
if(typeof(TreeDWR)=="undefined"){
        Ext.Msg.alert(
"警告提示","请先设置DWR, Spring加载错误!");
ExpandedSubBlockStart.gifContractedSubBlock.gif    }
else{
        NavTree.setMgr(TreeDWR);
        NavTree.init();
        NavTree.show();
    }

}
);

  展示代码:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
ExpandedBlockStart.gifContractedBlock.gif<%@ page contentType="text/html;charset=UTF-8"%>
<html>
    
<head>
        
<title>导航控制</title>
        
<link rel="stylesheet" type="text/css"
            href
="../scripts/ext/resources/css/ext-all.css">
        
<script type="text/javascript"
            src
="../scripts/ext/adapter/ext/ext-base.js"></script>
        
<script type="text/javascript" src="../scripts/ext/ext-all.js"></script>
        
<script type="text/javascript" src="../dwr/engine.js"></script>
        
<script type="text/javascript" src="../dwr/util.js"></script>
        
<script type="text/javascript" src="../dwr/interface/TreeDWR.js"></script>
        
<script type="text/javascript"
            src
="../scripts/treedemo/console-index.js"></script>
    
</head>
    
<body>
    
</body>
</html>

  

 效果图:

 

 其他的操作较多就不贴图了。

转载于:https://www.cnblogs.com/BruceLeey/archive/2009/06/06/1497851.html

不服老外不行,还是人家实在,贴出来的源码绝对能运行,找了两个晚上找到的。佩服佩服,那些翻译的,每一个能完整的运行,哎。下面是sql CREATE TABLE [dbo].[Employee]( [EmployeeID] [int] IDENTITY(1,1) NOT NULL, [FirstName] [varchar](50), [LastName] [varchar](50), [SupervisorID] [int] NULL, CONSTRAINT [PK_Employee] PRIMARY KEY CLUSTERED ( [EmployeeID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO GO ALTER TABLE [dbo].[Employee] WITH CHECK ADD CONSTRAINT [FK_Employee_Employee] FOREIGN KEY([SupervisorID]) REFERENCES [dbo].[Employee] ([EmployeeID]); TRUNCATE TABLE Employee; SET IDENTITY_INSERT Employee ON INSERT INTO Employee(EmployeeID, FirstName, LastName, SupervisorID) VALUES(21, 'Arrigoni','Ellen',null); INSERT INTO Employee(EmployeeID, FirstName, LastName, SupervisorID) VALUES(22,'Beilby','Paige Denise',null); INSERT INTO Employee(EmployeeID, FirstName, LastName, SupervisorID) VALUES(32,'Bell','Ken James',null); INSERT INTO Employee(EmployeeID, FirstName, LastName, SupervisorID) VALUES(45,'Campbell','Scott Richard',null); INSERT INTO Employee(EmployeeID, FirstName, LastName, SupervisorID) VALUES(91,'Chen','Hueyfang',null); INSERT INTO Employee(EmployeeID, FirstName, LastName, SupervisorID) VALUES(93,'Figaro','Christopher Michael',null); INSERT INTO Employee(EmployeeID, FirstName, LastName, SupervisorID) VALUES(113,'Fitzgerald','Joseph OConnor',null); INSERT INTO Employee(EmployeeID, FirstName, LastName, SupervisorID) VALUES(201,'Heriveaux','Marlange',null); INSERT INTO Employee(EmployeeID, FirstName, LastName, SupervisorID) VALUES(301,'MacKenzie','Davin S',null); INSERT INTO Employee(EmployeeID, FirstName, LastName, SupervisorID) VALUES(311,'Brien','Kelsey Leigh',null); SET IDENTITY_INSERT Employee OFF; INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Sarfatti','Aaron Joseph',null); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Wu','Ichan John',null); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Xia','Diwei',null); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Zhao','Jingjing',null); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Abbas','Anees Fatima',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Adams','Philip Lance',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Allen','Adrienne N',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Allen','Philip Michael',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Altilio','Michael',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Amspacher','Gregory Robert',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Anderson','David Michael',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Anger','Amelie Huimei',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Ashby','John J.',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Au','Chanel Roxanna',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Au','Wai Kong',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Ausiello','Kristin Ann',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Avery','Hans',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Badley','Roger Kenneth',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Bagla','Vikash',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Baillargeon','Michelle C',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Basha','Paul Frederick',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Bazile','Max Husani',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Beauchesne','Francois Montpetit',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Berube','Pierre-Luc',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Boehme','Joshua',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Boundy','Kris Dawnlyn',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Brisson','Edith',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Brown','Robert Wayne',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Burningham','Bryan Paul',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Burris','Donald Hugh',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Byrd','Matthew Russel',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Campbell','Brian Alexander',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Carlson','Karen Denise',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chan','Charline Dizon',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chan','Chia Khow',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chan','Hau-Chung',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chan','Ho Lun',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chan','Ka Shing',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chan','Ka Yip',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chang','SeungHwan',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chao','Paojung',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chaudhry','Nikita',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chen','Chongyang',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chen','Hong',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chen','Irawati',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chen','Sheng-Hsien',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chen','Shun',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chen','Wan-Yu',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Cheng','Huiyu',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Cheong','Bevan Y S',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Cheung','Carin',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Cheung','Geoffrey C',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chim','Grace Wai Sze',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chin','Chang-Han',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chow','Jeany',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chow','Khong Tic',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Christensen','Issac Merrill',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Christy','Ilene E',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Christy','Karen',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chu','Wendy',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chua','Samuel Teik Kiong',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Chung','Ho Yin',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Clark','Michael E',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Coe','Adam James',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Comeau-Tougas','Etienne',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Conroy','Kelly Riehl',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Corona','Jonas',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Coulombe','Diane',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Covalle','Matthew Allen',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Curran','Ron Alan',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Dai','Rui',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Dealmeida','Arthur Craig',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Dhulipala','Deepti',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Didier','Matthew Lee',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Dion','Valerie',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Dodd','Heidi Lynn',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Dooley','Brent Alan',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Dorr','Nate H',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Doyle','Michael Andrew IV,',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Dwyer','Brandon John',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Ellis','Amanda Senules',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Ellis','Claudia',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Enriquez','Keith H',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Etheridge','Andrew Christian',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Etlinger','Benjamin Herman',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Fan','Taylor',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Fang','Wilson',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Fast','Trevor James',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Fausey','Jeffrey John',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Filshtein','Teresa Jenica',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('France','Andrew Edson',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Fraser','Andrew James',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Fredrickson','Tricia Ann',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Fries','John William',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Fung','Chui Ying',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Gabriel','Joseph',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Gao','Jie',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Gao','Yang',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Garneau','Michael',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Gesink','Gary James',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Gingerich','Adam Michael',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Gould','Susan Yvonne',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Gupta','Puja',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Hale','Christopher Allen',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Han','Zhongxian',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Hardy','Amber Kay',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Harshman','Michael John',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Hassan','Raza',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Hayes','Richard Laurent',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Hess','Laura Vignati',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Hickok','Lauren Elizabeth',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Hixon','Sarah C',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Hoge','Bryan Kenneth',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Honett','Stephanie Grace',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Howard','Jason David',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Hsu','Chi-Pu',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Hsu','Chiukao',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Hu','Yungui',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Huang','Ying',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Hubbard','Mindy',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Hung','Kenneth Lik Hang',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Hung','Kian Teong',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Iwamoto','Todd Akira',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Jiang','Dazhi',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Jin','Jenny',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Jin','Yueqi (Alec)',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Jobe','Elizabeth Anne',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Jong','Peter Cy',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Junt','Don',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Kabala','Joel C',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Kao','Nicole',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Kassam','Salim Shiraz',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Khor','Kahhoa',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Kim','Hwa-Young',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Kim','Jihyun',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Kim','Joseph M.',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Kimball','Jacob A',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Kong','Weifeng',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Koumoulis','Mirjam',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Kouri','Justin Vahe',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Kriausakul','Navarat',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Kroening','Jason Gerald',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Kwan','Pui-Yin',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Kwok','Chau Mo',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Kwok','Johnathan Pak Wai',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lai','Kim Fung',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lalumiere','Michel',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lam','Ho Ying Ellen',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lam','Melissa I',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lamm','Elizabeth Ann',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lang','Jessica May',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lannan','Dustin William',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lantagne','Kathie',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lapeyre','Francois',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Larson','Michael John',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lau','Phooi Wan',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Laurence Bourassa','Yannick',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lavoie','Lisa',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Law','Chi Hong',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lawton','Linda Barker',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lazarus','Saul',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lee','Kin Hoe',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lee','Mandy Hoi Man',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lee','Michelle Keum',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lee','Su Meng',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lee','Taik-Ki',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Leida','Johann K',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Levinsky','Marc R',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Li','Chen',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Li','Chun Yu Matthew',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Li','Dongsheng',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Li','Fengchun',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Li','Hongyi',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Li','Hua',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Li','Xinyan',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Li','Xinyu X',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Li','Yanli',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Li','Zheng',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Li','Zhigang John',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lian','Xiu',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lim','Yih Chen',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lin','Chia Ju',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lin','Tsung Yu',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lin','Yijing',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lipperman','Brody D',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Liu','Dong',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Liu','Jianxun',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Liu','Pak-Hay Patrick',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Liu','Xiaofang',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lo','Keith Joe Ye',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lokken','Patrick William',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Long','Jeffrey Ryan',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Long','Jun',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lu','Chien-Hung',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Lu','Ziyao',201); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Luo','Mian',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('MacMurdy','Michael',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Majeed','Rizwan',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Maloney','Matthew Ryan',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Maltais','Maxime',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Man','Angie Rho-Nung',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Marks','Nathaniel Andrew',311); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('McBane','Roderick James',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Minute','Eric John',91); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Morehead','Lynn M',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Morris','Michael',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Motsiopoulos','Christos',113); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Murray','Timothy Kevin',311); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Nadeau Roy','Melanie',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Nee','Stephanie Wan-Jung Wang',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Ng','Pui Wai',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Nguyen','Hoan Thi Ngoc',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Nolan','Thomas',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Noonan','Valerie Ann',311); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Notaristefano','Amanda Jean',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Ofori','Ernest Ntim',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Olberding','Kevin William',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Orr','William Breckenridge',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Owens','John Philip',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Paquet','Marie-Andree',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Patel','Amee Y',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Patota','Timothy Jason',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Pearce','Marissa Simone',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Pesarek','Brad Michael',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Ponorovskaya','Olga',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Popatia','Yasmin Akberali',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Qi','Jinning',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Qi','Youquan',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Qian','Aiping',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Quock','Cathy Wemie',113); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Rachakonda','Bindavi',311); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Rakowski','Brian J',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Rao','Smita Ramdas',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Rasmussen','Jonathan William',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Rawlins','Marisa',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Renfrew','Jessica Erin',91); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Romano','Christine Lynne',311); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Sakhrani','Paul Vashi',113); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Santay','Kavita',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Sapochak','Jonathan Andrew',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Schenck','Robert Tarlton',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Schopfer','Mark Louis',311); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Schweickert','Estellene Mischelle',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Sequeira','Nancy Salgado',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Shafer','Garrett C',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Shewarega','Meron',91); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Simonelli','Brad Lee',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Slowinska','Jowita',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Smith','Glenn Stanley',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Southwell','Andrew Lee',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Spencer','John A',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Stecklein','Daniel',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Steinbrunner','David James',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Steinshouer','Jared B',311); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Sudwerts','Ephraim',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Sui','Difei',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Svara','Frank Richard',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Symonds','Mark Andrew',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Tackmann','Andrew Richard',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Tam','Nga Yau',311); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Tess','Andrew Steven',113); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Tharnish','Sarah Marie',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Theisen','Tyler Jay',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Thomas','Kemba',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Thomas','Stephen Paul',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Thoo','Kwan-Ji Jeannie',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Treetipbut','Pataraporn',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Tremblay','Jean-Francois',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Trexler','Weston Dean',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Trinrud','Christopher Walter',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Trivedi','Aditya Dushyant',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Tsai','Ching-Fang',311); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Tsang','ChiFai',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Turner','Andrew Frederick',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Vahid','Reza',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Verghis','Raina Rachel',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Vincent','Adrian',113); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Vulpio','Laura M',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Wang','Jingyan',91); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Wang','Ning',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Wang','Tianjiao',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Wang','Xiaolu',21); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Wei Chong','Lai',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Weise','Mary Katherine',311); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Wen','Jiajia',113); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Wen','Victoria',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Widmer','Alisa Johnson',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('WONG','Man Hong',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Wong','Maria Wing Kei',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Wong','Ngai Keung',311); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Wu','Chingfeng',301); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Wu','Li',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Xiao','Chunfang',113); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Xiao','Meng',311); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Yang','Su',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Yeung','Hon Keung',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Yiu','Terence Tin Hang',32); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Yuen','Kim Hung Jackie',113); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Zhang','Chu',22); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Zhang','Ning',311); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Zhang','Peng',93); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Zheng','Chunmei',45); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Zhuang','Yuelin',113); INSERT INTO Employee(FirstName, LastName, SupervisorID) VALUES('Zou','Hui',113);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值