一、配置分析
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如下:
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创建生成实体的类 实例如下:
< Lasp CaseNo ="第一" ></ Lasp >
< Lasp CaseNo ="第二" ></ Lasp >
< Lasp CaseNo ="第三" ></ Lasp >
< Lasp CaseNo ="第四" ></ Lasp >
< Lasp CaseNo ="第五" ></ Lasp >
< Lasp CaseNo ="第六" ></ Lasp >
</ LoadDB >
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)