zip包,然后自動下載下來
創(chuàng)新互聯(lián)公司專注網(wǎng)站設計,以設計驅動企業(yè)價值的持續(xù)增長,網(wǎng)站,看似簡單卻每一個企業(yè)都需要——設計,看似簡潔卻是每一位設計師的心血 十余年來,我們只專注做網(wǎng)站。認真對待每一個客戶,我們不用口頭的語言來吹擂我們的優(yōu)秀,上1000家的成功案例見證著我們的成長。
1.預先定義好模板
2.界面輸入相關參數(shù)
3.解析模板生成代碼并下載
最后放出源代碼:
package com.et.controller.system.createcode;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.et.controller.base.BaseController;
import com.et.util.DelAllFile;
import com.et.util.FileDownload;
import com.et.util.FileZip;
import com.et.util.Freemarker;
import com.et.util.PageData;
import com.et.util.PathUtil;
/**
* 類名稱:FreemarkerController
* 創(chuàng)建人:Harries
* 創(chuàng)建時間:2015年1月12日
* @version
*/
@Controller
@RequestMapping(value=”/createCode”)
public class CreateCodeController extends BaseController {
/**
* 生成代碼
*/
@RequestMapping(value=”/proCode”)
public void proCode(HttpServletResponse response) throws Exception{
PageData pd = new PageData();
pd = this.getPageData();
/* ============================================================================================= */
String packageName = pd.getString(“packageName”); //包名 ========1
String objectName = pd.getString(“objectName”); //類名 ========2
String tabletop = pd.getString(“tabletop”); //表前綴 ========3
tabletop = null == tabletop?””:tabletop.toUpperCase(); //表前綴轉大寫
String zindext = pd.getString(“zindex”); //屬性總數(shù)
int zindex = 0;
if(null != zindext !””.equals(zindext)){
zindex = Integer.parseInt(zindext);
}
ListString[] fieldList = new ArrayListString[](); //屬性集合 ========4
for(int i=0; i zindex; i++){
fieldList.add(pd.getString(“field”+i).split(“,fh,”)); //屬性放到集合里面
}
MapString,Object root = new HashMapString,Object(); //創(chuàng)建數(shù)據(jù)模型
root.put(“fieldList”, fieldList);
root.put(“packageName”, packageName); //包名
root.put(“objectName”, objectName); //類名
root.put(“objectNameLower”, objectName.toLowerCase()); //類名(全小寫)
root.put(“objectNameUpper”, objectName.toUpperCase()); //類名(全大寫)
root.put(“tabletop”, tabletop); //表前綴
root.put(“nowDate”, new Date()); //當前日期
DelAllFile.delFolder(PathUtil.getClasspath()+”admin/ftl”); //生成代碼前,先清空之前生成的代碼
/* ============================================================================================= */
String filePath = “admin/ftl/code/”; //存放路徑
String ftlPath = “createCode”; //ftl路徑
/*生成controller*/
Freemarker.printFile(“controllerTemplate.ftl”, root, “controller/”+packageName+”/”+objectName.toLowerCase()+”/”+objectName+”Controller.java”, filePath, ftlPath);
/*生成service*/
Freemarker.printFile(“serviceTemplate.ftl”, root, “service/”+packageName+”/”+objectName.toLowerCase()+”/”+objectName+”Service.java”, filePath, ftlPath);
/*生成mybatis xml*/
Freemarker.printFile(“mapperMysqlTemplate.ftl”, root, “mybatis_mysql/”+packageName+”/”+objectName+”Mapper.xml”, filePath, ftlPath);
Freemarker.printFile(“mapperOracleTemplate.ftl”, root, “mybatis_oracle/”+packageName+”/”+objectName+”Mapper.xml”, filePath, ftlPath);
/*生成SQL腳本*/
Freemarker.printFile(“mysql_SQL_Template.ftl”, root, “mysql數(shù)據(jù)庫腳本/”+tabletop+objectName.toUpperCase()+”.sql”, filePath, ftlPath);
Freemarker.printFile(“oracle_SQL_Template.ftl”, root, “oracle數(shù)據(jù)庫腳本/”+tabletop+objectName.toUpperCase()+”.sql”, filePath, ftlPath);
/*生成jsp頁面*/
Freemarker.printFile(“jsp_list_Template.ftl”, root, “jsp/”+packageName+”/”+objectName.toLowerCase()+”/”+objectName.toLowerCase()+”_list.jsp”, filePath, ftlPath);
Freemarker.printFile(“jsp_edit_Template.ftl”, root, “jsp/”+packageName+”/”+objectName.toLowerCase()+”/”+objectName.toLowerCase()+”_edit.jsp”, filePath, ftlPath);
/*生成說明文檔*/
Freemarker.printFile(“docTemplate.ftl”, root, “說明.doc”, filePath, ftlPath);
//this.print(“oracle_SQL_Template.ftl”, root); 控制臺打印
/*生成的全部代碼壓縮成zip文件*/
FileZip.zip(PathUtil.getClasspath()+”admin/ftl/code”, PathUtil.getClasspath()+”admin/ftl/code.zip”);
/*下載代碼*/
FileDownload.fileDownload(response, PathUtil.getClasspath()+”admin/ftl/code.zip”, “code.zip”);
}
}
AutoJava 是一款免費的,針對于Oracle和SQLserver數(shù)據(jù)庫的、以面向對象模式的Java代碼生成工具。AutoJava根據(jù)O/R Mapping規(guī)則生成表對應的Java對象,并且生成了所有的添加、刪除、修改、查詢等底層數(shù)據(jù)庫操作代碼。借助于AutoJava我們基本上不用再寫與數(shù)據(jù)庫相關的操作代碼,只需要在此基礎上實現(xiàn)相關的業(yè)務邏輯,將我們從重復的無太大技術含量的工作中解放出來。
AutoJava 是我在工作中為了省時間而寫出來的一個小工具,希望AutoJava能給廣大的Java人員在編碼過程中節(jié)省時間。這是地址
JNPF低代碼開發(fā)平臺可以以極少量代碼或無代碼的方式開發(fā)各種企業(yè)級管理系統(tǒng),其特點如下:
1. web在線開發(fā)
低代碼開發(fā)平臺是個全Web可視化開發(fā)和運行架構,只要在web端網(wǎng)頁就能開發(fā),不需要安裝配置復雜的本地開發(fā)環(huán)境;
2. 代碼生成器
依托代碼生成器,開發(fā)人員大大減少了代碼編輯量,并且生成的代碼還可下載拷貝應用,可根據(jù)需求進行個性化修改;
3. 工作流引擎
工作流引擎可以輕松快捷的搭建業(yè)務流程管理系統(tǒng)和協(xié)同交互管理體系,可隨時按需更改流程邏輯以適應新需求;
4. 流程設計器
流程設計器集成了表單設計器和流程引擎,并支持線性流程、父子流程、同步分合流、異步分合流程,全部實現(xiàn)可視化設計;
5. 全源碼交付
低代碼開發(fā)平臺提供商業(yè)化的全源碼交付,可進行二次個性化開發(fā),減少了代碼編寫,簡化了開發(fā)流程,提升了開發(fā)效率;
6. 更新升級快速
如果需求發(fā)生變化,用戶只需通過web端網(wǎng)頁登錄開發(fā)賬號,調整相應的功能并發(fā)布即可,整個過程可能只需要幾分鐘便可完成;
7. 數(shù)據(jù)管理強大
低代碼開發(fā)平臺的數(shù)據(jù)處理功能十分強大,可自動生成各種報表,還可以以大屏的方式直觀的呈現(xiàn)出實時的動態(tài)數(shù)據(jù);
8. 縮減開發(fā)成本
傳統(tǒng)的編程開發(fā)模式需要許多人來共同協(xié)作研發(fā),現(xiàn)在運用低代碼開發(fā)平臺只需要兩三個甚至一個人便可完成開發(fā)工作;
9. 部署方式靈活
平臺的部署方式十分多樣化,可實現(xiàn)公有云和私有云部署,也可進行本地化部署,以滿足企業(yè)多變的差異化需求;
10. 快速開發(fā)SaaS
平臺可以輕松快速地開發(fā)ERP、CRM、HRM、BPM、OA、財務管理等各類SaaS管理系統(tǒng)和業(yè)務管理系統(tǒng),助力企業(yè)效益提升;
這便是JNPF低代碼開發(fā)平臺的主要特點和優(yōu)勢,其大大優(yōu)于第三方定制開發(fā)以及企業(yè)自主探索開發(fā)等幾種傳統(tǒng)的開發(fā)方式。運用JNPF低代碼開發(fā)平臺,開發(fā)者可以高效快速的開發(fā)各種企業(yè)管理系統(tǒng),并還可以進行各種子系統(tǒng)、子平臺的開發(fā)拓展,以滿足企業(yè)各種復雜的管理運營需求,同時系統(tǒng)的更新升級也十分敏捷方便。
主要功能: 你只要設計好數(shù)據(jù)庫 就可以生成java vo
java DAO jsp
servlet
struts-config配置信息
oracle 建表語句 查詢語句 等
可生成java struts 架構的完整的源碼 包括 增加 刪除 修改 查詢等功能的源碼
但
1.不同的架構,需要不同的生成器
2.生成器一般需要模板技術,如freeMarker、velocity等
3.生成器也是Java項目,可以自己修改、設計、開發(fā)
4.生成器能節(jié)省一定的工作量
學這個? 網(wǎng)上都有現(xiàn)成的軟件,會用就行,使用很簡單。 如果是想學開發(fā)一個代碼生成器的話,我覺得沒必要啊。
你把JAVA 語言學會了,真正在開發(fā)的時候自然會遇見這個軟件,自然就會了
按照我的理解,可以的,代碼生成器是跨平臺,而且是跨語言的(至少是跨文本語言的,UML暫時不好說,)。
代碼生成器作為一種開發(fā)工具,一般不直接作為程序的一部分,通常也不直接或間接(如通過AOP)被程序調用,他是通過編程的方式生成所需要的代碼,然后將生成的代碼作為源文件,復制到開發(fā)工具的代碼區(qū),然后進行編譯。由于代碼生成器是在編譯之前運行的,因此它可以跨語言,你不但可以用代碼生成器生成高級語言,也可以生成匯編語言,甚至機器碼(0、1代碼)。
但編寫代碼生成器是一個難點,它需要你了解目標編程語言的語法。如果別人已經(jīng)把你需要的代碼生成器寫好了,你只需按要求使用即可,此時就不需要了解目標編程語言的語法。
JNI是通過Java調用C語言(或其他語言,一般是C),它的實現(xiàn)機制與代碼生成器不同(JNI是通過代碼調用實現(xiàn)功能,而代碼生成器是生成代碼,復制代碼進行使用),由于C是底層語言,一些底層操作單靠Java無法實現(xiàn),所以才需要JNI。
以上是我對代碼生成器的個人理解,雖然提問時間已過了很久,但依然希望能對你及其他網(wǎng)友有所幫助。
今日推薦:JeeCGBoot低代碼開發(fā)平臺
推薦理由:
1、前后端實現(xiàn)分離架構,通過API調用,實現(xiàn)架構解耦
2、項目集成SpringBoot、SpringCloud的Spring全家桶
3、在線實現(xiàn)開發(fā),表單開發(fā)設計、報表配置、在線圖表設計、在線設計流程、流程自動化、插件能力等
4、系統(tǒng)集成了工作流,實現(xiàn)擴展任務接口。
5、解決java項目的70%的重復工作
6、最重要的是技術售后的完善,有完善的開發(fā)文檔,常見問題,交流群
適用場景
1、內(nèi)部辦公系統(tǒng)OA
2、企業(yè)資源計劃系統(tǒng)ERP
3、客戶關系管理系統(tǒng)CRM
4、企業(yè)信息管理系統(tǒng)
5、電商SAAS系統(tǒng)
功能特色:
1、支持微服務SpringCloudAlibab全家桶
2、前后端高效代碼生成器,單表,一對多模型,CRUD等功能一鍵生成
3、低代碼圖表功能,在線設計圖表無需編碼,實現(xiàn)曲線圖,柱狀圖,數(shù)據(jù)報表等自定義排版布局
4、封裝各種工具類,如定時任務,短信接口郵件發(fā)送,excel導入,文件上傳下載等
5、支持查詢過濾器,動態(tài)拼裝SQL追加查詢條件
6、實現(xiàn)數(shù)據(jù)權限,控制到行級,列表級,表單字段級,實現(xiàn)不同人看不同數(shù)據(jù)
7、支持SAAS服務模式,提供多租戶的架構方案
8、數(shù)據(jù)庫兼容主流Mysql、PostgreSql、Oracle、SQLServer、MariaDB等主流數(shù)據(jù)庫,一套代碼兼容主流
9、集成了Activiti工作流
10、支持單點登錄CAS集成方案
11、接口統(tǒng)一采用restful接口方式,集成了Swagger-ui在線接口文檔
技術架構:
后臺環(huán)境:
Java8+Maven+Mysql+Redis
后臺開發(fā)技術
springBoot2+SpringCloudAlibaba+MybatisPlus+Jimurport+ApacheShir
前端:
Vue2.6+Axios
微服務架構圖:
后臺操作圖:
支持手機端
分享題目:java有代碼生成器 java代碼生成工具推薦
標題URL:http://www.rwnh.cn/article40/doocseo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、定制開發(fā)、搜索引擎優(yōu)化、ChatGPT、服務器托管、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)