hibernate手动创建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出了问题,没法通过逆向工程生成配置文件,闲来无事自己写个以后可以拿来用,另外,权当练手
 * 
 * @author LOOK
 * 
 */
public class CreateHbmXml {
    /**
     * 输入类的包名及类名,在其目录下创建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;
    }

    /**
     * 创建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("文件重新创建");
            }
            Writer out = new FileWriter(file);
            out.write(sBuilder.toString());
            out.close();
            System.out.println("创建成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容