freemarker 生成java_利用FreeMarker自动生成JavaEE项目中的dao、business、service层代码...

实现目标:

在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值