import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.lang.reflect.Field;
/**
* myeclipse出了問題,沒法通過逆向工程生成配置文件,閑來無事自己寫個以后可以拿來用,另外,權(quán)當練手
*
* @author LOOK
*
*/
public class CreateHbmXml {
/**
* 輸入類的包名及類名,在其目錄下創(chuàng)建xxx.hbm.xml文件
*
* @param packageName
* 類的包名
* @param className
* 類名
*/
public static void createHbmXML(String packageName, String className) {
try {
Class<?> clazz = Class.forName(packageName + "." + className);
Field[] fields = clazz.getDeclaredFields();
StringBuilder sBuilder = new StringBuilder();
sBuilder.append("<?xml version=\"1.0\"?>\n"
+ "<!DOCTYPE hibernate-mapping PUBLIC "
+ "\"-//Hibernate/Hibernate Mapping DTD 3.0//EN\" "
+ " \"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd\" > \n");
sBuilder.append("<hibernate-mapping package=\"" + packageName + "."
+ firstToLowCase(className) + "\">\n");
sBuilder.append("<class name=\"" + className + "\" table=\""
+ firstToLowCase(className) + "_\">\n");
for (Field field : fields) {
String param = field.getName();
if ("id".equals(param)) {
sBuilder.append("\t<id name=\"id\" column=\"id\"></id>\n");
} else {
sBuilder.append("\t<property name=\"" + param + "\"/>\n");
}
}
sBuilder.append(" </class>\n</hibernate-mapping>");
File directory = new File(".");
String path = directory.getCanonicalPath();
packageName = packageName.replace('.', File.separatorChar);
String fileName = className + ".hbm.xml";
path = path + File.separator + "src" + File.separator + packageName
+ File.separator + fileName;
createFile(sBuilder, className, path);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 首字母小寫。ClientInfo-->clientInfo
*
* @param className
* 類名
* @return 屬性名
*/
public static String firstToLowCase(String className) {
char temp[] = className.toCharArray();
temp[0] += 32;
String string = String.valueOf(temp);
return string;
}
/**
* 創(chuàng)建xx.hbm.xml文件
*
* @param sBuilder
* @param className
*/
public static void createFile(StringBuilder sBuilder, String className,
String path) {
File file = new File(path);
try {
if (file.exists()) {
file.delete();
file.createNewFile();
System.out.println("文件重新創(chuàng)建");
}
Writer out = new FileWriter(file);
out.write(sBuilder.toString());
out.close();
System.out.println("創(chuàng)建成功");
} catch (IOException e) {
e.printStackTrace();
}
}
}
hibernate手動創(chuàng)建xx.hbm.xml文件
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 最近在一邊看視頻學習這個框架,一遍對著視頻開始敲代碼,達到學以致用的地步,可就是這么一個問題,使我糾結(jié)了一小時。 ...
- 在開發(fā)過程中,hibernate的配置是較為復(fù)雜的一部分。首先,就是hibernate.cfg.xml文件的配置,...