1、new file 选择plug-in Project 输入projectName next 最后选择plug-in with a popup menu finish。
2.调用eclipse插件接口 实现自己代码生成功能,具体
package com.th.generator.popup.actions;
import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.eclipse.core.internal.resources.WorkspaceRoot;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.osgi.service.datalocation.Location;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IActionDelegate;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;
public class TemplateAddAction implements IObjectActionDelegate {
private Shell shell;
private ISelection selection;
/**
* Constructor for Action1.
*/
public TemplateAddAction() {
super();
}
/**
* @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
*/
public void setActivePart(IAction action, IWorkbenchPart targetPart) {
shell = targetPart.getSite().getShell();
}
/**
* @see IActionDelegate#run(IAction)
*/
public void run(IAction action) {
// MessageDialog.openInformation(shell, "Generator", "代码生成 was executed.");
IStructuredSelection structured = (IStructuredSelection) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService()
.getSelection("org.eclipse.jdt.ui.PackageExplorer");
Object element = structured.getFirstElement();
// Object element2 = ((IStructuredSelection) selection).getFirstElement();
String packageName = element.toString();
FileDialog dialog = new FileDialog(shell, SWT.OPEN);
dialog.setText("模板选择");
dialog.setFilterExtensions(new String[] { "*.*", "*.xml", "*.txt", "*.asmx" });
String filePath = dialog.open();
if (dialog != null) {
// java.io.File file = new java.io.File(filePath);
InputStream in = null;
Properties p = null;
try {
in = new BufferedInputStream(new FileInputStream(filePath));
p = new Properties();
p.load(in);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
String url = p.getProperty("url");
String user = p.getProperty("user");
String password = p.getProperty("password");
String driverClassName = p.getProperty("driverClassName");
String tableName = p.getProperty("tableName");
String templatePath = p.getProperty("templatePath");
String templatName = p.getProperty("templatName");
ReflectDataBase cjb = new ReflectDataBase(url, user, password, driverClassName, tableName);
try {
// cjb.getColumn();
//eclipse工作空间路径
Location work = Platform.getInstanceLocation();
String url2 = work.getURL().getPath();
String eclipseRoot = Platform.getInstallLocation().getURL().toString();
eclipseRoot = eclipseRoot.replace("file:/", "");
String outPath = url2 + getProjectPath(packageName) + "sql/";
//String workSpace = Platform.getInstanceLocation().getURL().getPath();
//IWorkspace workspace = ResourcesPlugin.getWorkspace();
//WorkspaceRoot root = (WorkspaceRoot) workspace.getRoot();
// java.io.File f = new java.io.File("D:/Tips.txt");
// BufferedWriter bw = new BufferedWriter(new FileWriter(f));
// bw.write("realPath" + outPath);
// bw.flush();
// bw.close();
//packageName = packageName.replace(" [in src [in fdfdf]]", "");
String objectName = CreateJavaBean.toUpperStrIndex(BeanHump.underlineToCamel(tableName));
packageName = packageName.substring(0,packageName.indexOf('[')-1) + ".domain";
CreateMapperXml.createXml(objectName, packageName + "." + objectName, tableName, cjb, templatePath, templatName, outPath);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("执行成功...");
}
}
/**
* @see IActionDelegate#selectionChanged(IAction, ISelection)
*/
public void selectionChanged(IAction action, ISelection selection) {
this.selection = selection;
}
public static String getProjectPath(String path) {
String packName = path.substring(0, path.indexOf('[') - 1);
path = path.substring(path.indexOf('['), path.length() - 1);
path = path.replace("[in ", "");
path = path.replace("]", "");
System.out.println("path" + path);
String[] ss = path.split(" ");
return ss[1] + "/" + ss[0] + "/" + packName.replace(".", "/") + "/";
}
}
properties配置:
url=jdbc:oracle:thin:@127.0.0.1:1521:ccip
user=test
password=test
driverClassName=oracle.jdbc.driver.OracleDriver
tableName=T_MM_CHECK
templatePath=D:/myXml/
templatName=myXmlFtl.ftl
最后右键 需要生成代码xml的package
会在package的sql文件处 生成mapper.xml