package me.lishuo.service; import me.lishuo.util.FileUtil; import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.*; 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; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import static me.lishuo.util.FileUtil.deleteDir; /** * Created by lis on 17/5/15. */ @Service public class GenService { public String genCode(HttpServletRequest request) { String ip = request.getParameter("ip"); String db = request.getParameter("db"); String port = request.getParameter("port"); String userName = request.getParameter("username"); String password = request.getParameter("password"); String modelPackageName = request.getParameter("modelpackagename"); String daoPackageName = request.getParameter("daopackagename"); String mapperPath = request.getParameter("mapperpath"); String tableNames[] = request.getParameterValues("tablenames"); String tableModels[] = request.getParameterValues("tablemodels"); String path = "mbg"; // 清空临时文件夹下所有内容 deleteDir(new File(System.getProperty("user.dir") + "/mbg")); try { List<String> warnings = new ArrayList<>(); boolean overwrite = true; File dirFile = new File(path); if (!dirFile.exists()) { dirFile.mkdirs(); } File conf = new File(System.getProperty("user.dir") + "/conf/Configuration.xml"); ConfigurationParser parser = new ConfigurationParser(warnings); Configuration config = parser.parseConfiguration(conf); Context context = config.getContexts().get(0); // db JDBCConnectionConfiguration jdbcConnectionConfiguration = context.getJdbcConnectionConfiguration(); String connection = "jdbc:mysql://" + ip + ":" + port + "/" + db; jdbcConnectionConfiguration.setConnectionURL(connection); jdbcConnectionConfiguration.setUserId(userName); jdbcConnectionConfiguration.setPassword(password); // model 配置 JavaModelGeneratorConfiguration javaModelGeneratorConfiguration = context.getJavaModelGeneratorConfiguration(); javaModelGeneratorConfiguration.setTargetPackage(modelPackageName); javaModelGeneratorConfiguration.setTargetProject(path); // DAO 配置 JavaClientGeneratorConfiguration javaClientGeneratorConfiguration = context.getJavaClientGeneratorConfiguration(); javaClientGeneratorConfiguration.setTargetPackage(daoPackageName); javaClientGeneratorConfiguration.setTargetProject(path); // Mapper SqlMapGeneratorConfiguration sqlMapGeneratorConfiguration = context.getSqlMapGeneratorConfiguration(); sqlMapGeneratorConfiguration.setTargetPackage(mapperPath); sqlMapGeneratorConfiguration.setTargetProject(path); // 表 List<TableConfiguration> tableConfigurations = context.getTableConfigurations(); tableConfigurations.clear(); for (int i = 0; i < tableNames.length; i++) { if (!tableNames[i].isEmpty() && !tableModels[i].isEmpty()) { TableConfiguration tableConfiguration = new TableConfiguration(context); tableConfiguration.setTableName(tableNames[i]); tableConfiguration.setDomainObjectName(tableModels[i]); tableConfiguration.setCountByExampleStatementEnabled(false); tableConfiguration.setDeleteByExampleStatementEnabled(false); tableConfiguration.setSelectByExampleStatementEnabled(false); tableConfiguration.setUpdateByExampleStatementEnabled(false); tableConfiguration.getProperties().setProperty("useActualColumnNames", "false"); tableConfigurations.add(tableConfiguration); } } DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); FileUtil.compress("mbg", System.getProperty("user.dir") + "/result/", "mbg.zip"); } catch (SQLException e) { e.printStackTrace(); return "01"; } catch (IOException ioe) { ioe.printStackTrace(); return "02"; } catch (InterruptedException ite) { ite.printStackTrace(); return "03"; } catch (InvalidConfigurationException ice) { ice.printStackTrace(); return "04"; } catch (XMLParserException xmle) { xmle.printStackTrace(); return "05"; } return "00"; } }