hibernate手動創(chuàng)建xx.hbm.xml文件

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();
        }
    }
}

最后編輯于
?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容