genhibernatereveng.java
来自「anewssystem新闻发布系统集成使用了spring hibernate f」· Java 代码 · 共 113 行
JAVA
113 行
package anni.tools;
import java.io.*;
import java.util.*;
import java.util.regex.*;
import jxl.*;
@SuppressWarnings("unchecked")
public class GenHibernateReveng {
static String basedir = null;
static String inputFileName = null;
static String packageName = null;
static String prefix = null;
/** * 根据命令行参数进行初始化. */
static void init(String[] args) throws Exception {
basedir = args[0];
packageName = args[1];
inputFileName = args[2];
prefix = args[3];
}
static void genXml(List<Bean> beanList) {
List list = new ArrayList();
for (Bean bean : beanList) {
if (!bean.isDisplay()) {
continue;
}
String className = getClassName(bean.tableName);
list.add(className);
}
makeReveng(list);
}
static String getClassName(String tableName) {
String[] tmp = tableName.toLowerCase().split("_");
StringBuffer buff = new StringBuffer();
for (int i = 0; i < tmp.length; i++) {
String name = tmp[i].substring(0, 1).toUpperCase() + tmp[i].substring(1);
buff.append(name);
}
return buff.toString();
}
static String getFieldName(String columnName) {
String[] tmp = columnName.split("_");
StringBuffer buff = new StringBuffer();
for (int i = 0; i < tmp.length; i++) {
String name = tmp[i].substring(0, 1).toUpperCase() + tmp[i].substring(1);
buff.append(name);
}
String fieldName = buff.toString();
String result = fieldName.substring(0, 1).toLowerCase() + fieldName.substring(1);
if (result.endsWith("Id")) {
return result.substring(0, result.length() - 2);
} else {
return result;
}
}
static void makeReveng(List list) {
try {
PrintWriter out = new PrintWriter(basedir + "/hibernate.reveng.xml");
out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
out.println("<!DOCTYPE hibernate-reverse-engineering SYSTEM \"http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd\">");
out.println("<hibernate-reverse-engineering>");
out.println(" <table-filter match-name=\".*\" match-schema=\"PUBLIC\"/>");
for (int i = 0; i < list.size(); i++) {
String name = (String) list.get(i);
Pattern p = Pattern.compile("[A-Z][a-z0-9]*");
Matcher m = p.matcher(name);
StringBuffer buff = new StringBuffer();
while (m.find()) {
buff.append(m.group().toUpperCase()).append("_");
}
if (buff.length() > 1) {
buff.deleteCharAt(buff.length() - 1);
}
out.println(" <table schema=\"PUBLIC\" name=\"" + prefix.toUpperCase() +
buff.toString() + "\"" + " class=\"" + packageName + name + "\">\r\n" +
" <primary-key>\r\n" +
" <generator class=\"increment\"/>\r\n" +
" </primary-key>\r\n" +
" </table>");
}
out.println("</hibernate-reverse-engineering>");
out.flush();
out.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
/** * main. */
public static void main(String[] args) throws Exception {
init(args);
System.out.println("start...");
List<Bean> beanList = ExcelUtils.read(inputFileName);
genXml(beanList);
System.out.println("end...");
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?