一、配置分析
1. Ant运行配置文件(注释:${name}写法为build.properties文件中定义)
<project name="JH.DeployDB" basedir="." default="create.db.oracleDB">
<!--项目简介-->
<description>发布数据库</description>
<!--导入build.properties属性文件中的属性值-->
<propertyfile="build.properties"/>
<!-- ================= -->
<!-- ===加载数据包与类=== -->
<!-- ================= -->
<pathid="classpath.ant">
<!--文件集lib -->
<filesetdir="lib"includes="**/*.jar"/>
<!-- 加载编译类(class文件) -->
<pathelementpath="bin"/>
<pathelementpath="bin/com/jihong/db"/>
</path>
<!-- ================= -->
<!-- =创建数据库中的数据= -->
<!-- ================= -->
<targetname="create.db.oracleDB" depends="declare.jbpm.tasks" description="发布Oracle数据库">
<!-- 数据库创建表 actions:命令 cfg:hibernate配置文件 properties:hibernate配置文件-->
<jbpmschema actions="create" cfg="${config.hibernate}" properties="${config.hibernate.properties}"/>
<!-- 加载xml中的数据 file:加载xml文件的位置 cleartable:要清空的表名之间用,分割 -->
<loadmodel file="${config.db}" cfg="${config.hibernate}" properties="${config.hibernate.properties}"
cleartable="LaspTable"/>
</target>
<!-- ================= -->
<!-- =清空数据库中的数据= -->
<!-- ================= -->
<target name="clean.db.oracleDB" depends="declare.jbpm.tasks" description="发布Oracle数据库">
<jbpmschema actions="clean" cfg="${config.hibernate}" properties="${config.hibernate.properties}"/>
</target>
<!-- ================= -->
<!-- =更新数据库中的数据= -->
<!-- ================= -->
<target name="update.db.oracleDB" depends="declare.jbpm.tasks" description="发布Oracle数据库">
<!-- 数据库创建表 -->
<jbpmschema actions="update" cfg="${config.hibernate}" properties="${config.hibernate.properties}"/>
<loadmodel file="${config.db}" cfg="${config.hibernate}" properties="${config.hibernate.properties}" />
</target>
<!-- ================= -->
<!-- ==加载数据到oracle= -->
<!-- ================= -->
<target name="load.db.oracleDB" depends="declare.jbpm.tasks" description="加载数据到Oracle数据库">
<!-- clearTable:清空的表名已,分割 -->
<loadmodel file="${config.db}" cfg="${config.hibernate}" properties="${config.hibernate.properties}"
clearTable="LaspTable"/>
</target>
<!-- ================= -->
<!-- 加载自定义Ant标签 -->
<!-- ================= -->
<target name="declare.jbpm.tasks">
<taskdef file="${config.ant.tasks}" format="properties">
<classpath refid="classpath.ant"/>
</taskdef>
</target>
</project>
2.Ant配置文件build.properties如下:
#hibernate config
config.hibernate=${basedir}/config/hibernate.cfg.xml
#hibernate properties
config.hibernate.properties=${basedir}/config/create.db.hibernate.properties
#Ant的自定义标签
config.ant.tasks =config/jbpm.ant.tasks.properties
#载入的xml数据位置
config.db=${basedir}/config/LoadDB.xml 3.Ant自定义配置标签文件jbpm.ant.tasks.properties代码如下:
jbpmschema=com.jihong.ant.JbpmSchemaTask
loadmodel=com.jihong.ant.LoadModel
二、代码分析
首先建立一个源代码文件夹(如:src/com.jihong.hibernate)用于存放hibernate位置文件.
根据自定义的xml创建生成实体的类 实例如下:
<LoadDB>
<Lasp CaseNo="第一"></Lasp>
<Lasp CaseNo="第二"></Lasp>
<Lasp CaseNo="第三"></Lasp>
<Lasp CaseNo="第四"></Lasp>
<Lasp CaseNo="第五"></Lasp>
<Lasp CaseNo="第六"></Lasp>
</LoadDB>

public class LaspTable implements Serializable
{
private static final long serialVersionUID = 1L;
private String caseNo;// 案号
private long id;

public long getId()
{
return id;
}

public void setId(long id)
{
this.id = id;
}

/** *//**
* 得到案号
*
* @return 返回 casetNo。
*/
public String getCaseNo()
{
if (caseNo == null)
{
return "";
}
return caseNo;
}

/** *//**
* 设置案号
*
* @param casetNo
* 要设置的 casetNo。
*/
public void setCaseNo(String caseNo)
{
this.caseNo = caseNo;
}
}

/** *//**
* 生成Lasp数据
*/
package com.jihong.ant.db;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.Element;
import com.jihong.ant.CreateModel;
import com.jihong.hibernate.model.LaspTable;

public class LaspCreateModel extends CreateModel
{
Map<String, Object> entitiesMap = new HashMap<String, Object>();
@Override
protected void addEntites(Document document)
{
Element jhRootElement = document.getRootElement();
ReadLasp(jhRootElement.elements("Lasp"));
entities.addAll(entitiesMap.values());
}

private void ReadLasp(List laspList)
{
Iterator ite = laspList.iterator();
while (ite.hasNext())
{
Element element = (Element) ite.next();
if (element != null)
{
String caseNo = element.attributeValue("CaseNo");
LaspTable laspTable = new LaspTable();
laspTable.setCaseNo(caseNo);
entitiesMap.put(caseNo, laspTable);
}
}
}
}
(注:加入hibernate3.jar和Oracle的classes12.jar)
42

被折叠的 条评论
为什么被折叠?



