Dorado7学习笔记---Dorado 7 自动生成Dao的类

第一种、bean都在一个包里面的做法

Dorado 7中的Java Bean层能够通过DBTool自动生成,而Dao层得自己手敲代码,继承HibernateDao。感觉有点麻烦。就手写了一个简单的Dao生成工具
1、设置好当前bean层目录,也就是这里的entity包的路径。
2、创建dao包
3、把所有的bean都换成dao 写入文件。
4、有洁癖的 可以修改格式。

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class AutoWriteDao {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        //根据实际情况修改
        String dir = "D:/***/src/com/***/entity";
//      String dir=null;
        if(dir==null|| !dir.contains("src"))
             new NullPointerException();

        String dest_dir =  dir.replace("/entity", "/dao");
        String dir_com = dir.substring(dir.indexOf("/src/") + 5).replaceAll("/",
                ".");

        String dest_dir_com = dest_dir.substring(dest_dir.indexOf("/src/") + 5)
                .replaceAll("/", ".");
        String[] arr = new File(dir).list();

        if(!new File(dest_dir).exists())
            new File(dest_dir).mkdirs();

        for (int i = 0; i < arr.length; i++) { 
            if(!new File(dir+"/"+arr[i]).isFile())
                continue;

            String a=arr[i].substring(0,arr[i].indexOf("."));

            String filenameDao = arr[i].replaceAll("\\.", "Dao.");
            File file = new File(dest_dir + "/" + filenameDao);

            FileWriter fw = new FileWriter(file);
            fw.write("package "+dest_dir_com+";\r\n");
            fw.write("import org.springframework.stereotype.Repository;\r\n" +
            "import com.bstek.dorado.hibernate.HibernateDao;\r\n"
                    + "import "+ dir_com+"."+a +";\r\n ");
            fw.write("@Repository\r\n");
            fw.write("public class "+filenameDao.substring(0,filenameDao.indexOf("."))+" extends HibernateDao<"+a +", Long> {}");
            fw.flush();
            fw.close();
        }
    }

}

第二种 不在同一个类的方法:bean不在一个包里面的做法

使用递归实现的

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class AutoWriteDao {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
                String dir = "D:/***/src/com/***/entity";
        // String dir=null;
        if (dir == null || !dir.contains("src"))
            new NullPointerException();

        String dest_dir = dir.replace("/entity", "/dao/ABCD/EDFD/FSFS");
        String dir_com = dir.substring(dir.indexOf("/src/") + 5).replaceAll("/",
                ".");

        String dest_dir_com = dest_dir.substring(dest_dir.indexOf("/src/") + 5)
                .replaceAll("/", ".");
        String[] arr = new File(dir).list();

        createFile(dir, dest_dir, dir_com, dest_dir_com, arr);
    }

    private static void createFile(String dir, String dest_dir, String dir_com,
            String dest_dir_com, String[] arr) throws IOException {
        if (!new File(dest_dir).exists())
            new File(dest_dir).mkdirs();
        for (int i = 0; i < arr.length; i++) {
            if (new File(dir + "/" + arr[i]).isDirectory()) {
                String[] arrlist = new File(dir + "/" + arr[i]).list();
                createFile(dir + "/" + arr[i], dest_dir + "/" + arr[i],
                        dir_com+"."+arr[i], dest_dir_com+"."+arr[i], arrlist);
                continue;
            }

            String a = arr[i].substring(0, arr[i].indexOf("."));

            String filenameDao = arr[i].replaceAll("\\.", "Dao.");
            File file = new File(dest_dir + "/" + filenameDao);

            FileWriter fw = new FileWriter(file);
            fw.write("package " + dest_dir_com + ";\r\n");
            fw.write("import org.springframework.stereotype.Repository;\r\n"
                    + "import com.bstek.dorado.hibernate.HibernateDao;\r\n"
                    + "import " + dir_com + "." + a + ";\r\n ");
            fw.write("@Repository\r\n");
            fw.write("public class "
                    + filenameDao.substring(0, filenameDao.indexOf("."))
                    + " extends HibernateDao<" + a + ", Long> {}");
            fw.flush();
            fw.close();
        }
    }

}

你可能感兴趣的:(dorado)