/**
**/package com.yuebing.zhongqiu.utils;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.api.ProgressCallback;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.Context;
import org.mybatis.generator.config.JavaClientGeneratorConfiguration;
import org.mybatis.generator.config.JavaModelGeneratorConfiguration;
import org.mybatis.generator.config.SqlMapGeneratorConfiguration;
import org.mybatis.generator.config.TableConfiguration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;/**
* @author IT
**/
public classGeneratorUtil {/**
* 使用java文件和xml文件结合的方式来配置org.mybatis.generator 自动生成代码
* @param configFileName 配置文件的名称
* @param tableConfig 配置项
* @param pcallbacks 回调接口
* @return 是否成功
* @throws IOException
* @throws XMLParserException
* @throws InvalidConfigurationException
* @throws SQLException
* @throws InterruptedException*/
public static boolean setJaveFile(String configFileName,HashMaptableConfig,ProgressCallback pcallbacks) throws IOException, XMLParserException, InvalidConfigurationException, SQLException, InterruptedException {
List warnings = new ArrayList();
boolean overwrite= true;
String rfp= GeneratorUtil.class.getResource("/"+configFileName).getFile();
File configFile= newFile(rfp);
ConfigurationParser cp= newConfigurationParser(warnings);
Configuration config=cp.parseConfiguration(configFile);
DefaultShellCallback callback= newDefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator= null;//hashmap
setConfiguration(config, tableConfig);
myBatisGenerator= newMyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(pcallbacks );return true;
}public static void setConfiguration(Configuration cft,HashMaptableConfig) {if(cft != null) {
List contextList =cft.getContexts();for(Context context :contextList) {
List tableConfList =context.getTableConfigurations();for(TableConfiguration tableConf :tableConfList) {//设置表名
String tableName = tableConfig.get("tableName");if(tableName != null && !"".equals(tableName))
tableConf.setTableName(tableName);//设置生成的实体类的名称
String domainObjectName = tableConfig.get("domainObjectName");if(domainObjectName != null && !"".equals(domainObjectName))
tableConf.setDomainObjectName(domainObjectName);
}//java实体类配置
JavaModelGeneratorConfiguration javaMode =context.getJavaModelGeneratorConfiguration();//设置model实体类对应的包路径,以及文件存放路径 targetProject可以指定具体的路径,如./src/main/java
String targetPackage = tableConfig.get("targetPackage");
String targetProject= tableConfig.get("targetProject");if(targetPackage != null && !"".equals(targetPackage))
javaMode.setTargetPackage(targetPackage);if(targetProject != null && !"".equals(targetProject))
javaMode.setTargetProject(targetProject);//对应的mapper.xml文件
SqlMapGeneratorConfiguration sqlMap =context.getSqlMapGeneratorConfiguration();
String xml_targetPackage= tableConfig.get("xml_targetPackage");
String xml_targetProject= tableConfig.get("xml_targetProject");if(xml_targetPackage != null && !"".equals(xml_targetPackage))
sqlMap.setTargetPackage(xml_targetPackage);if(xml_targetProject != null && !"".equals(xml_targetProject))
sqlMap.setTargetProject(xml_targetProject);//对应的Mapper接口类文件
JavaClientGeneratorConfiguration javaClient =context.getJavaClientGeneratorConfiguration();
String Java_map_targetPackage= tableConfig.get("Java_map_targetPackage");
String Java_map_targetProject= tableConfig.get("Java_map_targetProject");if(Java_map_targetPackage != null && !"".equals(Java_map_targetPackage))
javaClient.setTargetPackage(Java_map_targetPackage);if(Java_map_targetProject != null && !"".equals(Java_map_targetProject))
javaClient.setTargetProject(Java_map_targetProject);//context//CommentGenerator commGen = context.getCommentGenerator();
}
}
}public static voidmain(String[] ag) {
String configFileName= "generatorConfiguration.xml";
HashMap tableConfig = new HashMap();
tableConfig.put("tableName", "sys_menu");
tableConfig.put("domainObjectName", "SysMenu");
tableConfig.put("targetPackage", "com.yuebing.zhongqiu.manage.system.bean");
tableConfig.put("targetProject", "./src/main/java");
tableConfig.put("xml_targetPackage", "mappers");
tableConfig.put("xml_targetProject", "./src/main/resources/static/mappers");
tableConfig.put("Java_map_targetPackage", "com.yuebing.zhongqiu.manage.system.dao.mapper");
tableConfig.put("Java_map_targetProject", "./src/main/java");
ProgressCallback pcallbacks= null;try{
setJaveFile(configFileName,tableConfig,pcallbacks);
}catch(IOException e) {
e.printStackTrace();
}catch(XMLParserException e) {
e.printStackTrace();
}catch(InvalidConfigurationException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}catch(InterruptedException e) {
e.printStackTrace();
}
}
}