java代碼自動生成
1. 很多公司開發的java代碼,jsp,js都是通過工具自動生成的如ant等
自動化開發工具,我用過,比較著名的有普元,浪潮樓上平台等。
首先,我要糾正下,ANT並不是自動生成代碼用的工具;
那些所謂的自動代碼生成器根本原理就是根據實現寫事先好的模板,再根據你提供的資料庫結構,生成一系列的增刪改查方法。的確是可以減少程序員的工作量,但是不能包含復雜或者特殊的業務邏輯,否則程序員全都失業了。
2. 怎麼樣用java代碼自動生成不重復的含有數字和字母的隨機碼
package tests;
/**
* 隨機生成32位字元串
*/
public class String32 {
public static String random(int length){//傳入的字元串的長度
StringBuilder builder = new StringBuilder(length);
for(int i = 0; i < length; i++){
int r = (int) (Math.random()*3);
int rn1=(int)(48+Math.random()*10);
int rn2=(int)(65+Math.random()*26);
int rn3=(int)(97+Math.random()*26);
switch(r){
case 0:
builder.append((char)rn1);
break;
case 1:
builder.append((char)rn2);
break;
case 2:
builder.append((char)rn3);
break;
}
}
return builder.toString();
}
public static void main(String[] args){
String s = String32.random(32);
System.out.println(s);
}
}
3. java代碼生成器怎麼用
zip包,然後自動下載下來
1.預先定義好模板
最後放出源代碼:
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
* 創建人:Harries
* 創建時間: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」); //屬性總數
int zindex = 0;
if(null != zindext && !」」.equals(zindext)){
zindex = Integer.parseInt(zindext);
}
List<String[]> fieldList = new ArrayList<String[]>(); //屬性集合 ========4
for(int i=0; i< zindex; i++){
fieldList.add(pd.getString(「field」+i).split(「,fh,」)); //屬性放到集合裡面
}
Map<String,Object> root = new HashMap<String,Object>(); //創建數據模型
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資料庫腳本/」+tabletop+objectName.toUpperCase()+」.sql」, filePath, ftlPath);
Freemarker.printFile(「oracle_SQL_Template.ftl」, root, 「oracle資料庫腳本/」+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」);
}
}
4. Myeclipse中如何自動生成Java代碼啊
myeclipse沒有直接的快捷鍵自動生成構造方法,可以有快捷鍵彈出source,接著點擊自動生成構造方法的菜單。
具體操作如下:工具里快捷鍵alt+shift+s
就彈出來Generate
Constructor
using
Fields
5. java代碼生成dat文件
Filefilename=newFile("F:\zd.dat");
說明:dat可以改成任何擴展名,是自己可以定義的,如下:
publicvoidcreateFile(){
//path表示所創建文件的路徑
Stringpath="d:/tr/rt";
Filef=newFile(path);
if(!f.exists()){
f.mkdirs();
}
//fileName表示創建的文件名;為txt類型;
StringfileName="test.txt";
Filefile=newFile(f,fileName);
if(!file.exists()){
try{
file.createNewFile();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
//現在可以在d:/tr/rt目錄下找到test.txt文件
6. java 如何自動生成某個數字固定,其餘數字隨機
自己設置一個方法(或者包裝系統的random類,這個更難,不過更專業),下面給你代碼:
public
int
getrandomexcept(int
randmax,int[]
exceptnums){
random
rand=new
random();
int
num=rand.nextint(randmax);
while(true){
int
have=0;
for(int
i=0;i<exceptnums.length;i++){
if(num==exceptnums[i]){
have=1;
}
}
if(have==0){
return
num;
}
num=rand.nextint(randmax);
}
}
親測可用
7. Java springboot + mybatis開發 有什麼辦法可以根據UML設計圖就可自動生成代碼IDEA有這功能嗎
那要看你的UML工具支不支持代碼生成,比如PowerDesigner就支持UML和Java代碼間的轉換,需要對PowerDesigner進行一定的配置。
8. yaml java代碼自動生成 部分類生出不出來
做自動測試時,使用yaml文件做界面要素配置,出現一個問題,經過自己的嘗試實現了xpath方式的讀取。把代碼分項出來。尤其是在使用xpath是,會出現yaml讀取出錯的情況。此時需要將xpath的內容使用雙引號括起來。代碼如下
6
logout: type:name value:logoutlogoutConfirm: type:xpath value:"//*[@id='queding']//td/*//button"
來自CODE的代碼片
snippet_file_0.txt
讀取yaml文件的java代碼如下
package com.bfm.utilities;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.util.HashMap;import org.ho.yaml.Yaml;/*該類為獲取yaml文件中的內容*/public class YamlReader { private HashMap<String, HashMap<String, String>> yml; @SuppressWarnings("unchecked") public HashMap<String, HashMap<String, String>> getYamlFile(String yamlFile) { File f = new File(yamlFile); try { this.yml = (HashMap<String, HashMap<String, String>>) Yaml.loadType(new FileInputStream(f.getAbsolutePath()), HashMap.class); } catch (FileNotFoundException e) { e.printStackTrace(); } return this.yml; } public static void main (String args[]){ YamlReader yr = new YamlReader(); yr.getYamlFile("E:\\workspace\\bfm\\src\\com\\bfm\\pageElements\\mainPageElements.yaml"); }}
9. 想用java自動生成貨品編號的代碼,生成規則如下:
那就傳分類的參數,去生成唄,,,,,從數據中確定下一個編號
~
~
~