AutoJava 是一款免費(fèi)的,針對(duì)于Oracle和SQLserver數(shù)據(jù)庫(kù)的、以面向?qū)ο竽J降腏ava代碼生成工具。AutoJava根據(jù)O/R Mapping規(guī)則生成表對(duì)應(yīng)的Java對(duì)象,并且生成了所有的添加、刪除、修改、查詢等底層數(shù)據(jù)庫(kù)操作代碼。借助于AutoJava我們基本上不用再寫(xiě)與數(shù)據(jù)庫(kù)相關(guān)的操作代碼,只需要在此基礎(chǔ)上實(shí)現(xiàn)相關(guān)的業(yè)務(wù)邏輯,將我們從重復(fù)的無(wú)太大技術(shù)含量的工作中解放出來(lái)。
10年的金門(mén)網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷(xiāo)型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整金門(mén)建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“金門(mén)網(wǎng)站設(shè)計(jì)”,“金門(mén)網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
AutoJava 是我在工作中為了省時(shí)間而寫(xiě)出來(lái)的一個(gè)小工具,希望AutoJava能給廣大的Java人員在編碼過(guò)程中節(jié)省時(shí)間。這是地址
zip包,然后自動(dòng)下載下來(lái)
1.預(yù)先定義好模板
2.界面輸入相關(guān)參數(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;
/**
* 類(lèi)名稱:FreemarkerController
* 創(chuàng)建人:Harries
* 創(chuàng)建時(shí)間: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”); //類(lèi)名 ========2
String tabletop = pd.getString(“tabletop”); //表前綴 ========3
tabletop = null == tabletop?””:tabletop.toUpperCase(); //表前綴轉(zhuǎn)大寫(xiě)
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); //類(lèi)名
root.put(“objectNameLower”, objectName.toLowerCase()); //類(lèi)名(全小寫(xiě))
root.put(“objectNameUpper”, objectName.toUpperCase()); //類(lèi)名(全大寫(xiě))
root.put(“tabletop”, tabletop); //表前綴
root.put(“nowDate”, new Date()); //當(dāng)前日期
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ù)庫(kù)腳本/”+tabletop+objectName.toUpperCase()+”.sql”, filePath, ftlPath);
Freemarker.printFile(“oracle_SQL_Template.ftl”, root, “oracle數(shù)據(jù)庫(kù)腳本/”+tabletop+objectName.toUpperCase()+”.sql”, filePath, ftlPath);
/*生成jsp頁(yè)面*/
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);
/*生成說(shuō)明文檔*/
Freemarker.printFile(“docTemplate.ftl”, root, “說(shuō)明.doc”, filePath, ftlPath);
//this.print(“oracle_SQL_Template.ftl”, root); 控制臺(tái)打印
/*生成的全部代碼壓縮成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”);
}
}
Java中的類(lèi)如果要實(shí)例化的話,必須手動(dòng)編寫(xiě),不能由系統(tǒng)自動(dòng)生成,實(shí)例如下:
public class CeShi{
int i;
public static void main(String[] args){
Ceshi ce = new Ceshi();
}
}
手動(dòng)編寫(xiě)的例子如上述代碼,Java中還提供了clone克隆的方式來(lái)生成實(shí)例變量,只需要該類(lèi)實(shí)現(xiàn)clone接口。
myeclipse沒(méi)有直接的快捷鍵自動(dòng)生成構(gòu)造方法,可以有快捷鍵彈出source,接著點(diǎn)擊自動(dòng)生成構(gòu)造方法的菜單。
具體操作如下:工具里快捷鍵alt+shift+s
就彈出來(lái)Generate
Constructor
using
Fields