spring+hibernate

来源:互联网 发布:日本搞笑电影知乎 编辑:程序博客网 时间:2024/05/16 14:25

加载的jar有:

                           log4j-1.2.16.jar   

                           c3p0-0.9.1.2.jar

                           mysql-connector-java-5.1.14-bin.jar

                           org.springfaramework.asm-3.0.5.release.jar

                           org.springfaramework.beans-3.0.5.release.jar

                           org.springfaramework.context-3.0.5.release.jar

                           org.springfaramework.core-3.0.5.release.jar

                           org.springfaramework.expression-3.0.5.release.jar

                           commons-logging-1.1.1.jar

                           commons-collections-3.1.jar

                           antlr-2.7.6.jar

                           dom4j-1.6.1.jar

                           hibernate3.jar

                           javassist-3.9.0.GA.jar

                            jta-1.1.jar

                            slf4j-api-1.5.8.jar

                           slf4j-nop-1.5.8.jar

文件结构图如下:


代码演示:

MainOrder.java

package org.baicai.spring.entity;


import java.io.Serializable;

public class MainOrder implements Serializable {

private static final long serialVersionUID = 6934677354492244854L;
private java.lang.Integer orderId; 
private java.lang.String customer; 
private java.lang.String description; 

public MainOrder() {
}
public MainOrder(java.lang.Integer orderId,java.lang.String customer,java.lang.String description) {
this.orderId = orderId;
this.customer = customer;
this.description = description;
}

public void setOrderId (java.lang.Integer orderId) 

    {
       this.orderId = orderId;
    }   
public java.lang.Integer getOrderId() 

    {
        return orderId;
    }    
public void setCustomer (java.lang.String customer) 

   {
        this.customer = customer;
    }   
public java.lang.String getCustomer() 

   {
        return customer;
    }    
public void setDescription (java.lang.String description) 

   {
       this.description = description;
    }

public java.lang.String getDescription() 

   {
        return description;
    }   
@Override
public String toString() 

    {
       return String.format("orderId:%s,customer:%s,description:%s",orderId,customer,description);
    }
}

SubOrder.java

package org.baicai.spring.entity;

import java.io.Serializable;

public class SubOrder implements Serializable {

private static final long serialVersionUID = 2608058366049676469L;
private java.lang.Integer subId; 
private java.lang.Integer orderId; 
private java.lang.String goods; 
private java.lang.String description; 

public SubOrder() 

{
}

public SubOrder(java.lang.Integer subId,java.lang.Integer orderId,java.lang.String goods,java.lang.String description) 

{
    this.subId = subId;
    this.orderId = orderId;
    this.goods = goods;
    this.description = description;
}
public void setSubId (java.lang.Integer subId) 

{
    this.subId = subId;
}   
public java.lang.Integer getSubId() 

{
    return subId;
 }   
public void setOrderId (java.lang.Integer orderId) 

{
    this.orderId = orderId;
}   
public java.lang.Integer getOrderId() 

{
    return orderId;
}    
public void setGoods (java.lang.String goods) 

{
    this.goods = goods;
}   
public java.lang.String getGoods() 

{
    return goods;
 }   
public void setDescription (java.lang.String description) 

{
    this.description = description;
}    
public java.lang.String getDescription() 

{
    return description;
}  
@Override
public String toString() 

{
  return String.format("subId:%s,orderId:%s,goods:%s,description:%s",subId,orderId,goods,description);
}
}


Mainorder.hbm.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
      <hibernate-mapping package="org.baicai.spring.entity">
            <class name="MainOrder" table="mainorder">
               <id name="orderId" type="java.lang.Integer">
                  <column name="orderId" sql-type="INT" not-null="true" precision="11" scale="0">
                  </column>
                  <generator class="native"></generator>
               </id>
               <property name="customer" type="java.lang.String">
                  <column name="customer" sql-type="VARCHAR(50)" not-null="false" length="50">
                  </column>
              </property>
              <property name="description" type="java.lang.String">
                  <column name="description" sql-type="VARCHAR(500)" not-null="false" length="500">
                  </column>
             </property>
        </class>
   </hibernate-mapping>


Suborder.hbm.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
      <hibernate-mapping package="org.baicai.spring.entity">
           <class name="SubOrder" table="suborder">
              <id name="subId" type="java.lang.Integer">
                  <column name="subId" sql-type="INT" not-null="true" precision="11" scale="0">
                  </column>
                  <generator class="native"></generator>
              </id>
              <property name="orderId" type="java.lang.Integer">
                   <column name="orderId" sql-type="INT" not-null="true" precision="11"scale="0">
                   </column>
              </property>
              <property name="goods" type="java.lang.String">
                    <column name="goods" sql-type="VARCHAR(50)" not-null="false" length="50">
                   </column>
               </property>
               <property name="description" type="java.lang.String">
                  <column name="description" sql-type="VARCHAR(500)" not-null="false"length="500">
                  </column>
             </property>
        </class>
   </hibernate-mapping>


HibernateUtil.java

package org.huhuiyu.spring.util;

import org.apache.log4j.Logger;

public class HibernateUtil {

private static SessionFactory sessionFactory;
private static HibernateUtil util = new HibernateUtil();
private static Logger logger = Logger.getLogger(HibernateUtil.class);

private HibernateUtil() 

{
     Configuration conf = new Configuration().configure();
     sessionFactory = conf.buildSessionFactory();
}
public static HibernateUtil getUtil() 

{
     return util;
}
public Session getSession() 

{
    return sessionFactory.getCurrentSession();
}
public static void main(String[] args) 

{
    Session session = HibernateUtil.getUtil().getSession();
    logger.debug(session);
    session.close();
}
}


BasicDao.java

package org.baicai.spring.util;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Projections;

public class BasicDao {
   private HibernateUtil hibernateUtil;
   
public BasicDao()
{
}
public HibernateUtil getHibernateUtil()
{
      return hibernateUtil;
}
public void setHibernateUtil(HibernateUtil hibernateUtil)
{
     this.hibernateUtil = hibernateUtil;
}
private Session getSession()
{
    Session session=hibernateUtil.getSession();
    return session;
}
   /**
    * 添加一笔记录
    * @param t
    *        记录Bean
    * @throws Exception
    */
protected <T> void saveEntity(T t) throws Exception
{
     getSession().save(t); 
}
   /**
    * 修改一笔记录
    * @param t
    *         记录Bean
    * @throws Exception
    */
protected <T> void updateEntity(T t) throws Exception
{
    getSession().update(t);
}
   /**
    * 删除一笔记录
    * @param t
    * @throws Exception
    */
protected<T> void deleteEntity(T t) throws Exception
{
    getSession().delete(t);
}
    /**
     * 查询同一对象的总记录 
     * @param c
     *        对象类型
     * @return
     *       总记录
     * @throws Exception
     */
protected <T> int queryEntityCount(Class<T> c) throws Exception
{
    Criteria criteria=  getSession().createCriteria(c).setProjection(Projections.rowCount());
    long count=(Long) criteria.uniqueResult();
    return (int) count;
}
   /**
    * 查询同的对象的所有记录
    * @param c
    *        对象类型
    * @return
    *        保存所有记录的集合
    * @throws Exception
    */
@SuppressWarnings("unchecked")
protected <T> List<T> queryAllEntity(Class<T> c)throws Exception
{
     List<T> list =getSession().createCriteria(c).list();
     return list;
}
   /**
    * 根据主键查询到唯一一笔记录
    * @param key
    *        主键
    * @param c
    *        对象类型
    * @return
    *       查询结果
    * @throws Exception
    */
@SuppressWarnings("unchecked")
protected <T> T queryEntityByKey(Serializable key,Class<T> c)throws Exception
{
     return (T) getSession().get(c, key);
}
   /**
    * 查询同一对象的start到end编号的记录 分页查询
    * @param c
    *        对象类型
    * @param start
    *          开始范围
    * @param end
    *          结束范围
    * @return
    *        查询结果
    * @throws Exception
    */
@SuppressWarnings("unchecked")
protected <T> List<T> queryEntityByPage(Class<T>c, int start,int end)throws Exception
{
    Criteria criteria=getSession().createCriteria(c);
    criteria.setFirstResult(start);
    criteria.setMaxResults(end);
    List<T> list = criteria.list();
    return list;
}
   /**
    * 根据类中的hql查询同一类型并符合条件筛选的记录总和
    * @param hql
    *        类中的hql语句
    * @param params
    *        条件筛选值
    * @return
    *        查询结果
    * @throws Exception
    */
protected <T> int queryHqlCount(String hql,Object...params)throws Exception
{
     Query query=getSession().createQuery(hql);
     processParams(query,params);
     long count=(Long) query.uniqueResult();
     return (int) count;
}
   /**
    * 根据类中的hql查询同一类型并符合条件筛选的所有记录
    * @param hql
    *         类中的hql语句
    * @param params
    *         条件筛选值
    * @return
    *       查询结果
    * @throws Exception
    */
@SuppressWarnings("unchecked")
protected <T> List<T> queryHqlEntitylist(String hql,Object...params)throws Exception
{
      Query query= getSession().createQuery(hql);
      processParams(query, params);
      return query.list();
}
   /**
    * 根据类中的hql查询同一类型并符合条件筛选的唯一一笔记录
    * @param hql
    *        类中的hql语句
    * @param params
    *         筛选条件值
    * @return
    *       查询 结果
    * @throws Exception
    */
@SuppressWarnings("unchecked")
protected <T> T queryHqlEntity(String hql,Object...params)throws Exception
{
    Query query=getSession().createQuery(hql);
    processParams(query, params);
    return (T) query.uniqueResult();
}
    /**
     * 根据类中的hql查询同一类型并符合条件筛选的start到end编号的记录  分页查询
     * @param hql
     *        类中的hql语句
     * @param start
     *         开始值
     * @param end
     *        结束值
     * @param params
     *        筛选条件值
     * @return
     *       查询 结果
     * @throws Exception
     */
@SuppressWarnings("rawtypes")
protected List queryHqlListByPage(String hql,int start,int end,Object... params)throws Exception
{
        Query  query=getSession().createQuery(hql);
        processParams(query, params);
        query.setFirstResult(start);
        query.setMaxResults(end);
        return query.list();

}
/**
* 根据配置文件(xml)中的hql查询同一类型并符合条件筛选的记录总和
* @param hqlName
*       配置文件的hql名称
* @param params
*        条件筛选值
* @return
*        查询结果
* @throws Exception
*/
protected <T> int queryNameHqlCount(String hqlName,Object...params)throws Exception
{
      Query query= getSession().getNamedQuery(hqlName);
      processParams(query,params);
      long count=(Long) query.uniqueResult();
      return (int) count;
}
/**
* 根据配置文件(xml)中的hql查询同一类型并符合条件筛选的statrt到end编号的记录  分页查询
* @param hqlName
*        配置文件的hql名称
* @param start
*        开始编号
* @param end
*        结束编号
* @param params
*        条件筛选值
* @return
*       查询结果
* @throws Exception
*/
@SuppressWarnings("rawtypes")
protected List queryNameHqlListByPage(String hqlName,int start,int end, Object...params)throws Exception
{
    Query query=getSession().getNamedQuery(hqlName);
    processParams(query, params);
    query.setFirstResult(start);
    query.setMaxResults(end);
    return query.list();
}
/**
* 根据配置文件(xml)中的hql查询同一类型并符合条件筛选的所有记录
* @param hqlName
*        配置文件的hql名称
* @param params
*        条件筛选
* @return
*        查询结果
* @throws Exception
*/
@SuppressWarnings("unchecked")
protected <T> List<T> queryNameHqlEntityList(String hqlName,Object...params)throws Exception
{
     Query query= getSession().getNamedQuery(hqlName);
     processParams(query, params);
     return query.list();
}
/**
* 根据配置文件(xml)中的hql查询同一类型并符合条件筛选的唯一一笔记录
* @param hqlName
*        配置文件的hql名称
* @param params
*        条件筛选
* @return
*       查询结果
* @throws Exception
*/
@SuppressWarnings("unchecked")
protected <T> T queryNamedHqlEntity(String hqlName,Object...params)throws Exception
{
     Query query= getSession().getNamedQuery(hqlName);
     processParams(query, params);
     return (T) query.uniqueResult();
}
/**
* 根据类部hql修改或删除符合条件筛选的记录
* @param hql
*        类部hql
* @param params
*         参数值
* @return
*       修改或删除后的结果
* @throws Exception
*/
protected int excuteHql(String hql,Object...params)throws Exception
{
     Query query= getSession().createQuery(hql);
     processParams(query, params);
     int result= query.executeUpdate();
     return result;
}
/**
* 根据配置(xml)hql修改或删除符合条件筛选的记录
* @param hqlName
*         配置文件的hql名称
* @param params
*         参数值
* @return
*        修改或删除后的结果
* @throws Exception
*/
protected int executeNameHql(String hqlName,Object...params)throws Exception
{
      Query query= getSession().getNamedQuery(hqlName);
      processParams(query, params);
      int result=query.executeUpdate();
      return result;
}
protected void processParams(Query query, Object...params) {
     if(params!=null)
     {
         for (int i = 0; i < params.length; i++) 

          {
             query.setParameter(i, params[i]);
          }
     }

}


MainOrderDao.java

package org.baicai.spring.dao;


import java.util.List;

import org.baicai.spring.entity.MainOrder;

public interface MainOrderDao {
public void saveMainorder(MainOrder mainorder) throws Exception;

public void updateMainorder(MainOrder mainorder) throws Exception;

public void deleteMainorder(MainOrder mainorder) throws Exception;

public MainOrder queryMainorderByKey(MainOrder mainorder) throws Exception;

public List<MainOrder> queryAllMainorder() throws Exception;
}


SubOrderDao.java

package org.baicai.spring.dao;

import java.util.List;

import org.baicai.spring.entity.SubOrder;

public interface SubOrderDao {
public void saveSubOrder(SubOrder subOrder) throws Exception;

public void updateSubOrder(SubOrder subOrder) throws Exception;

public void deleteSubOrder(SubOrder subOrder) throws Exception;

public SubOrder querySubOrderByKey(SubOrder subOrder) throws Exception;

public List<SubOrder> queryAllSubOrder() throws Exception;
}


MainOrderDaoImpl.java

package org.baicai.spring.dao.impl;

import java.util.List;

import org.baicai.spring.dao.MainOrderDao;
import org.baicai.spring.entity.MainOrder;
import org.baicai.spring.util.BasicDao;

public class MainOrderDaoImpl extends BasicDao implements MainOrderDao {

@Override
public void saveMainorder(MainOrder mainorder) throws Exception 

{
   super.saveEntity(mainorder);
}

@Override
public void updateMainorder(MainOrder mainorder) throws Exception 

{
  super.updateEntity(mainorder);
}


@Override
public void deleteMainorder(MainOrder mainorder) throws Exception 

{
   super.deleteEntity(mainorder);
}


@Override
public MainOrder queryMainorderByKey(MainOrder mainorder) throws Exception 

{
     return super.queryEntityByKey(mainorder.getOrderId(), MainOrder.class);
}


@Override
public List<MainOrder> queryAllMainorder() throws Exception 

{
      return super.queryAllEntity(MainOrder.class);
}
}


SubOrderDaoImpl.java

package org.baicai.spring.dao.impl;

import java.util.List;

import org.baicai.spring.dao.SubOrderDao;
import org.baicai.spring.entity.SubOrder;
import org.baicai.spring.util.BasicDao;

public class SubOrderDaoImpl extends BasicDao implements SubOrderDao{

@Override
public void saveSubOrder(SubOrder subOrder) throws Exception 

{
     super.saveEntity(subOrder);
}
@Override
public void updateSubOrder(SubOrder subOrder) throws Exception 

{
     super.updateEntity(subOrder);
}
@Override
public void deleteSubOrder(SubOrder subOrder) throws Exception 

{
     super.deleteEntity(subOrder);
}
@Override
public SubOrder querySubOrderByKey(SubOrder subOrder) throws Exception 

{
     return super.queryEntityByKey(subOrder.getSubId(), SubOrder.class);
}
@Override
public List<SubOrder> queryAllSubOrder() throws Exception 

{
     return super.queryAllEntity(SubOrder.class);
}
}


DemoService.java

package org.baicai.spring.service;

import java.util.List;

import org.baicai.spring.entity.MainOrder;
import org.baicai.spring.entity.SubOrder;

public interface DemoService {
   
public void saveOrder(MainOrder order,List<SubOrder> subs)throws Exception;

public List<MainOrder> queryAllMainOrder() throws Exception;

public List<SubOrder> queryAllSuborder() throws Exception;
}


DemoserviceImpl.java

package org.baicai.spring.service.impl;

import java.util.List;

import org.baicai.spring.dao.MainOrderDao;
import org.baicai.spring.dao.SubOrderDao;
import org.baicai.spring.entity.MainOrder;
import org.baicai.spring.entity.SubOrder;
import org.baicai.spring.service.DemoService;
import org.baicai.spring.util.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class DemoserviceImpl implements DemoService {

private HibernateUtil hibernateUtil;
private MainOrderDao mainOrderDao;
private SubOrderDao  subOrderDao; 

public HibernateUtil getHibernateUtil() 

{
   return hibernateUtil;
}
public void setHibernateUtil(HibernateUtil hibernateUtil) 

{
   this.hibernateUtil = hibernateUtil;
}
public MainOrderDao getMainOrderDao() 

{
    return mainOrderDao;
}

public void setMainOrderDao(MainOrderDao mainOrderDao) 

{
   this.mainOrderDao = mainOrderDao;
}
public SubOrderDao getSubOrderDao() 

{
   return subOrderDao;
}
public void setSubOrderDao(SubOrderDao subOrderDao) 

{
   this.subOrderDao = subOrderDao;
}


@Override
public void saveOrder(MainOrder order, List<SubOrder> subs)throws Exception 

{
   Session session=hibernateUtil.getSession();
   Transaction tran = session.beginTransaction();
   try {
         mainOrderDao.saveMainorder(order);
         for (SubOrder subOrder : subs) 

            {
               subOrder.setOrderId(order.getOrderId());
               subOrderDao.saveSubOrder(subOrder);
            }
             tran.commit();
            } catch (Exception e) {
               tran.rollback();
                throw e;
}
}
@Override
public List<MainOrder> queryAllMainOrder() throws Exception 

{
      Session session=hibernateUtil.getSession();
      Transaction tran = session.beginTransaction();
      try {
             List<MainOrder>list =mainOrderDao.queryAllMainorder();
             tran.commit();
             return list;
            } catch (Exception e) {
            tran.rollback();
             throw e;
}
}
@Override
public List<SubOrder> queryAllSuborder() throws Exception 

{
    Session session=hibernateUtil.getSession();
    Transaction tran = session.beginTransaction();
    try {
          List<SubOrder>list =subOrderDao.queryAllSubOrder();
          tran.commit();
          return list;
         } catch (Exception e) {
          tran.rollback();
          throw e;
}
}
}


Demo.java

package org.baicai.spring.demo;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import org.baicai.spring.entity.MainOrder;
import org.baicai.spring.entity.SubOrder;
import org.baicai.spring.service.DemoService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Demo {
   public static void main(String[] args) throws Exception

{
  //添加测试数据
  Random random=new Random();
  MainOrder  order=new MainOrder();
  int sign =random.nextInt(10)+100;
  order.setCustomer("mainOrder"+sign);
  order.setDescription("description"+sign);
  
  sign =random.nextInt(10)+100;
  List<SubOrder> subs=new ArrayList<SubOrder>();
  SubOrder subOrder= new SubOrder();
  subOrder.setDescription("description"+sign);
  subOrder.setGoods("goods"+sign);
  subs.add(subOrder);
  
  sign =random.nextInt(10)+100;
  subOrder= new SubOrder();
  subOrder.setDescription("description"+sign);
  subOrder.setGoods("goods"+sign);
  subs.add(subOrder);
  
  //加载spring
  ApplicationContext context = new ClassPathXmlApplicationContext("/context.xml");
  System.out.println("========================================");
  
  //测试
  DemoService demoService=context.getBean("demoServiceDao",DemoService.class);
  demoService.saveOrder(order, subs);
  
  
  List<MainOrder> mlist = demoService.queryAllMainOrder();
  for (MainOrder mainOrder : mlist) 

     {
          System.out.println(mainOrder);
      }
  System.out.println("========================================");
  
  List<SubOrder> slist= demoService.queryAllSuborder();
    for (SubOrder subOrder2 : slist) 

   {
      System.out.println(subOrder2);
    }
}
}


hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>     
       <mapping resource="org/baicai/spring/hbm/MainOrder.hbm.xml"/>
       <mapping resource="org/baicai/spring/hbm/SubOrder.hbm.xml"/>
    </session-factory >
</hibernate-configuration>


hibernate.properties

#connection
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc\:mysql\://127.0.0.1\:3306/Spring?characterEncoding\=utf8
hibernate.connection.username=root
hibernate.connection.password=paul
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
#common
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=15
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.current_session_context_class=thread
#other
system.url=jdbc\:mysql\://127.0.0.1\:3306/mysql?characterEncoding\=utf8


context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- 完整非侵入式Hibernate+Spring整合 -->
  <bean id="hibernateUtil" class="org.baicai.spring.util.HibernateUtil" factory-method="getUtil">       </bean>
  
  <bean id="basicDao" class="org.baicai.spring.util.BasicDao" abstract="true">
     <property name="hibernateUtil" ref="hibernateUtil"></property>
  </bean>
  
  <bean id="mainOrderDao" class="org.baicai.spring.dao.impl.MainOrderDaoImpl" parent="basicDao">         </bean>
  
  <bean id="subOrderDao" class="org.baicai.spring.dao.impl.SubOrderDaoImpl" parent="basicDao"></bean>
  
  <bean id="demoServiceDao" class="org.baicai.spring.service.impl.DemoserviceImpl">
      <property name="hibernateUtil" ref="hibernateUtil"></property>
      <property name="mainOrderDao" ref="mainOrderDao"></property>
      <property name="subOrderDao" ref="subOrderDao"></property>
  </bean>
</beans>


create.sql

drop  database if exists Spring;
create database Spring default character set utf8;


create.table.sql

create table MainOrder
(
    orderId integer auto_increment primary key,
    customer  varchar(50) not null,
    description varchar(500) not null
);

create table SubOrder
(
    subId integer auto_increment primary key,
    orderId integer not null references MainOrder(orderId),
    goods varchar(50) not null,
    description varchar(500) not null
);


build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project default="reset.all">
   <property file="../src/hibernate.properties"></property>
      <path id="mysql">
         <fileset file="../../../JAR_File/jdbc/mysql-connector-java-5.1.14-bin.jar"></fileset>
      </path>
     <target name="create.sql">
       <sql userid="${hibernate.connection.username}" password="${hibernate.connection.password}"                 url="${system.url}" driver="${hibernate.connection.driver_class}" src="create.sql" 

            encoding="utf-8" delimiter=";">
           <classpath refid="mysql"></classpath>
      </sql>
    </target>

    <target name="create.table.sql">
    <sql driver="${hibernate.connection.driver_class}"password="${hibernate.connection.password}"             url="${hibernate.connection.url}" userid="${hibernate.connection.username}" delimiter=";"             src="create.table.sql" encoding="utf-8" classpathref="mysql"   />
    </target>

   <target name="reset.all">
      <antcall target="create.sql" />
      <antcall target="create.table.sql" />
   </target>
</project>


注:log4j.dtd,log4j.xml就不呈现出来了  见《struts1 一个很简单的登录演示》

运行结果如下: