java代碼生成器


新建項目時,創建Dao、Service、ServiceImpl、Po過於繁瑣,所以使用模板工具寫了一個代碼生成器。

使用技術:mysql+velocity+springboot

項目github:https://github.com/lcp22/fcct

實現效果:自動獲取數據庫表名及列相關屬性,自動創建相應的Dao、Service、ServiceImpl、Po。

庫里有21張表,不到2秒的時間,就能自動生成基礎的模型,效率還不錯。生成內容部分截圖:

dao

po

service

serviceImp

現有BUG:

1.如果數據庫的某張表只有一個字段,生成該表的模型會出現問題。

2.由於現在表字段只用部分類型,所以字段類型轉換不全。

private String formatSqlParamater(String sqlParamater){
        String paramater = "";
        switch (sqlParamater){
            case "int":
                paramater = "Integer";
                break;
            case "bigint":
                paramater = "Long";
                break;
            case "varchar":
                paramater = "String";
                break;
            case "datetime":
                paramater = "Date";
                break;
            case "timestamp":
                paramater = "Date";
                break;
        }
        return paramater;
    }

使用步驟,根據環境和需求修改CodeTemplates.properties,然后直接在FcctApplicationTests調用contextLoads:

#是否重復創建
COVER_FLAG = false
#生成文件上級路徑
CODE_PACKAGE = src/main/java/cn/lcp/fcct/
#需要生成文件:po,dao,service,serverImpl
TEMPLATES = po,dao,service,serviceImpl
#生成insert_sql和update_sql時是否過濾第一個字段:即ID
EXCLUDE_FIRST_PARAMATER = true
#生成insert_sql和update_sql時過濾數據庫字段
EXCLUDE_FILES = is_status,create_time
#生成實體類時過濾字段
EXCLUDE_FILEDS = is_status,create_time,last_time
@Test
    public void contextLoads() {
        long t = System.currentTimeMillis();
        System.out.println("-------------------------開始------------------------------");
        //創建代碼生成器工廠
        CodeFactory codeFactory = CodeFactory.getInstance();
        //獲取所有表名
        List<String> tableNames = codeFactoryDao.getTableName();
        for (String tableName:tableNames) {
            //獲取表相關屬性
            List<InformationSchema> informationSchemas = codeFactoryDao.getColumnName(tableName);
            //創建文件
            codeFactory.CreateCode(tableName,informationSchemas);
        }
        System.out.println("-------------------------結束------------------------------");
        System.out.println("----------------耗時:"+(System.currentTimeMillis()-t)+"毫秒------------------------------");
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM