实现目标:
在JavaEE项目中,可以从通过Hibernate的逆向工程,将数据库中的表映射成Java实体对象,现假设映射出来的文件放在包com.rongji.filecenter.persistence中,该包放持久层对象类,包里面有两个文件,一个是FcApp.java,一个是FcApp.hbm.xml.
对于一般的项目,业务相关的文件存放格式为:com.company.project.dao、com.company.project.dao.impl,只有project是变动的,而其他一般保持不变,若现在已知存在如下包路径com.rongji.filecenter.persistence,并且包内含有实体对象的类(.java)及配置文件(.xml),通过运行程序,可以自动在项目中生成包路径:com.rongji.filecenter.dao、com.rongji.filecenter.dao.impl、com.rongji.filecenter.business、com.rongji.filecenter.business.impl、com.rongji.filecenter.service、com.rongji.filecenter.service.impl,并且在包内生成相应的代码!
实现过程:
1、在项目中导入相应的包,FreeMarker需要导入freemark.jar包,有用到Spring、Hibernate需要导入相应的包。
2、编写代码:
《一》XMLReader.java文件,该文件主要用于读取xml配置文件中实体对象的类名、id名
package com.rongji.filecenter.utils;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class XMLReader {
private static String fileName = "";
private static File file = null;
public XMLReader() {
}
public XMLReader(String fileName) {
this.file = new
File(fileName);
}
public XMLReader(File file) {
this.file = file;
}
public static String getIdName() {
String id = null;
SAXReader saxReader = new
SAXReader();
try {
Document
document = saxReader.read(file);
Element root
= document.getRootElement();
for (Iterator
iter = root.elementIterator(); iter.hasNext();) {
Element
element = (Element) iter.next();
for
(Iterator iterInner = element.elementIterator(); iterInner
.hasNext();)
{
Element
elementInner = (Element) iterInner.next();
if
(elementInner.getName().equals("id")) {
id
= elementInner.attributeValue("name");
//
System.out.println(id);
break;
}
}
}
} catch (DocumentException e)
{
e.printStackTrace();
}
return id;
}
public static String getClassFullName() {
String className = null;
SAXReader saxReader = new
SAXReader();
try {
Document
document = saxReader.read(file);
Element root
= document.getRootElement();
for (Iterator
iter = root.elementIterator(); iter.hasNext();) {
Element
element = (Element) iter.next();
if
(element.getName().equals("class")) {
className
= element.attributeValue("name");
//
System.out.println(className);
break;
}
}
} catch (DocumentException e)
{
e.printStackTrace();
}
return className;
}
public static String getClassFullName(File
file) {
XMLReader.file = file;
return
ge