package com.huaheng.test; import java.io.*; import java.sql.*; import java.text.MessageFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class CreateCode { public static void main(String[] args) { try { //language=SQL String sql = "select TABLE_NAME, TABLE_COMMENT from information_schema.tables where table_schema = 'wms_v2'"; List<Map<String, Object>> tableList = getDataList(sql); //language=SQL sql = "SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT FROM information_schema.columns WHERE table_schema = 'wms_v2'"; List<Map<String, Object>> columnList = getDataList(sql); // sql = "SELECT * FROM config_header WHERE deleted = FALSE and enable = TRUE"; // List<Map<String, Object>> configHeadeCcolumnList = getDataList(sql); // sql = "SELECT * FROM config_detail WHERE deleted = FALSE and enable = TRUE"; // List<Map<String, Object>> configDetailColumnList = getDataList(sql); Map<String, String> packageNames = getPackages(); if (tableList.size() > 0 && columnList.size() > 0) { createMapper(tableList, columnList, packageNames); // createModel(tableList, columnList); // createDao(tableList, columnList, packageNames); // createService(tableList); // createServiceImpl(tableList); // createController(tableList, columnList); } } catch (Exception ex) { // 处理 JDBC 错误 System.out.println(ex.getMessage()); ex.printStackTrace(); } } // // private static void createEnumerate (List<Map<String, Object>> tableList, List<Map<String, Object>> columnList) // { // System.out.println("====================开始生成MODEL===================================="); // // String directory = "src/main/java/com/huaheng/wms/enumerate"; // StringBuilder sb = new StringBuilder(); // // for(Map<String, Object> tableMap : tableList) // { // String tableName = getStringValue(tableMap.get("TABLE_NAME")); // String modelName = underlineConvertUpper(tableName); // // sringBuilderAppend(sb, 2, "package com.huaheng.wms.enumerate;"); // // sringBuilderAppend(sb, 2, MessageFormat.format("public enum {0}Column {'", modelName)); // // for(Map<String, Object> columnMap : columnList) // { // if (columnMap.get("TABLE_NAME").equals(tableName)) // { // String columnName = getStringValue(columnMap.get("COLUMN_NAME")); // String columnComment = getStringValue(columnMap.get("COLUMN_COMMENT")); // String dataType = sqlToModel(getStringValue(columnMap.get("DATA_TYPE"))); // String methodName = underlineConvertUpper(getStringValue(columnMap.get("COLUMN_NAME"))); // String isNull = getStringValue(columnMap.get("IS_NULLABLE")); // String columnDefault = getStringValue(columnMap.get("COLUMN_DEFAULT")); // // if (isNull.equals("NO") && columnDefault == null && !columnName.equals("id")) // { // if (dataType.equals("String")) // sringBuilderAppend(sb, 1, MessageFormat.format(" @NotBlank(message=\"{0}不能为空\")", columnComment)); // else // sringBuilderAppend(sb, 1, MessageFormat.format(" @NotNull(message=\"{0}不能为空\")", columnComment)); // } // sringBuilderAppend(sb, 1, MessageFormat.format(" @ApiModelProperty(value = \"{0}\")", columnComment)); // sringBuilderAppend(sb, 1, MessageFormat.format(" private {0} {1};", dataType, columnName)); // if (dataType.equals("String")) // { // sringBuilderAppend(sb, 1, MessageFormat.format(" public void set{0}({1} {2}) '{' this.{2} = {2} == null ? null : {2}.trim(); '}'", methodName, dataType, columnName)); // } // else // { // sringBuilderAppend(sb, 1, MessageFormat.format(" public void set{1}({0} {2}) '{' this.{2} = {2}; '}'", dataType, methodName, columnName)); // } // sringBuilderAppend(sb, 2, MessageFormat.format(" public {0} get{1}() '{' return this.{2}; '}'", dataType, methodName, columnName)); // } // } // sringBuilderAppend(sb, 2, "}"); // if (sb.length() > 0) // { // createFile(directory, modelName + ".java", sb.toString()); // sb.delete(0, sb.length()); // // 输出数据 // System.out.println(MessageFormat.format("生成 模型:{0} ", modelName)); // } // } // // System.out.println("====================生成MODEL完成===================================="); // } // private static void createModel (List<Map<String, Object>> tableList, List<Map<String, Object>> columnList) // { // System.out.println("====================开始生成MODEL===================================="); // // String directory = "src/main/java/com/huaheng/wms/model"; // StringBuilder sb = new StringBuilder(); // // for(Map<String, Object> tableMap : tableList) // { // String tableName = getStringValue(tableMap.get("TABLE_NAME")); // String modelName = underlineConvertUpper(tableName); // // sringBuilderAppend(sb, 2, "package com.huaheng.wms.model;"); // sringBuilderAppend(sb, 1, "import io.swagger.annotations.ApiModelProperty;"); // sringBuilderAppend(sb, 1, "import javax.validation.constraints.*;"); // sringBuilderAppend(sb, 2, "import java.math.BigDecimal;"); // sringBuilderAppend(sb, 2, "import java.util.Date;"); // sringBuilderAppend(sb, 2, MessageFormat.format("public class {0} extends BaseModel '{'", modelName)); // // for(Map<String, Object> columnMap : columnList) // { // if (columnMap.get("TABLE_NAME").equals(tableName)) // { // String columnName = getStringValue(columnMap.get("COLUMN_NAME")); // String columnComment = getStringValue(columnMap.get("COLUMN_COMMENT")); // String dataType = sqlToModel(getStringValue(columnMap.get("DATA_TYPE"))); // String methodName = underlineConvertUpper(getStringValue(columnMap.get("COLUMN_NAME"))); // String isNull = getStringValue(columnMap.get("IS_NULLABLE")); // String columnDefault = getStringValue(columnMap.get("COLUMN_DEFAULT")); // // if (isNull.equals("NO") && columnDefault == null && !columnName.equals("id")) // { // if (dataType.equals("String")) // sringBuilderAppend(sb, 1, MessageFormat.format(" @NotBlank(message=\"{0}不能为空\")", columnComment)); // else // sringBuilderAppend(sb, 1, MessageFormat.format(" @NotNull(message=\"{0}不能为空\")", columnComment)); // } // sringBuilderAppend(sb, 1, MessageFormat.format(" @ApiModelProperty(value = \"{0}\")", columnComment)); // sringBuilderAppend(sb, 1, MessageFormat.format(" private {0} {1};", dataType, columnName)); // if (dataType.equals("String")) // { // sringBuilderAppend(sb, 1, MessageFormat.format(" public void set{0}({1} {2}) '{' this.{2} = {2} == null ? null : {2}.trim(); '}'", methodName, dataType, columnName)); // } // else // { // sringBuilderAppend(sb, 1, MessageFormat.format(" public void set{1}({0} {2}) '{' this.{2} = {2}; '}'", dataType, methodName, columnName)); // } // sringBuilderAppend(sb, 2, MessageFormat.format(" public {0} get{1}() '{' return this.{2}; '}'", dataType, methodName, columnName)); // } // } // sringBuilderAppend(sb, 2, "}"); // if (sb.length() > 0) // { // createFile(directory, modelName + ".java", sb.toString()); // sb.delete(0, sb.length()); // // 输出数据 // System.out.println(MessageFormat.format("生成 模型:{0} ", modelName)); // } // } // // System.out.println("====================生成MODEL完成===================================="); // } private static void createMapper (List<Map<String, Object>> tableList, List<Map<String, Object>> columnList, Map<String, String> packageNames) { System.out.println("====================开始生成Mapper===================================="); String tableName = ""; String packageName = null; String modelName = null; String humpName = null; String directory = null; StringBuilder mapperSB = new StringBuilder(); StringBuilder columnNameSB = new StringBuilder(); for(Map<String, Object> tableMap : tableList) { tableName = getStringValue(tableMap.get("TABLE_NAME")); packageName = packageNames.get(tableName); //modelName = underlineConvertUpper(tableName); if (packageName == null) continue; directory = "src/main/resources/mybatis/" + packageName.split("\\.")[3]; modelName = packageName.split("\\.")[5]; packageName = packageName.substring(0, packageName.lastIndexOf(".")); for(Map<String, Object> columnMap : columnList) if (columnMap.get("TABLE_NAME").equals(tableName)) columnNameSB.append(columnMap.get("COLUMN_NAME").toString() + ", "); columnNameSB.delete(columnNameSB.length() - 2, columnNameSB.length() - 1); sringBuilderAppend(mapperSB, 1, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); sringBuilderAppend(mapperSB, 1, "<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">"); sringBuilderAppend(mapperSB, 1, MessageFormat.format("<mapper namespace=\"{0}.mapper.{1}MapperAuto\">", packageName, modelName)); //生成 selectListEntityByLike 方法 sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <select id=\"selectListEntityByLike\" resultType=\"{0}.domain.{1}\">", packageName, modelName)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" SELECT {0} ", columnNameSB.toString())); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" FROM {0}", tableName)); sringBuilderAppend(mapperSB, 1, " <where>"); for(Map<String, Object> columnMap : columnList) { if (columnMap.get("TABLE_NAME").equals(tableName)) { String dataType = getStringValue(columnMap.get("DATA_TYPE")); String columnNameItem = getStringValue(columnMap.get("COLUMN_NAME")); if (columnNameItem.toLowerCase().equals("companyid") || columnNameItem.toLowerCase().equals("companycode")) { sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"{0}List != null and {0}List.size() > 0 \"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} in ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <foreach collection=\"{0}List\" item=\"{0}Item\" open=\"(\" separator=\",\" close=\")\">", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" #'{'{0}Item'}'", columnNameItem)); sringBuilderAppend(mapperSB, 1, " </foreach>"); sringBuilderAppend(mapperSB, 1, " </if>"); } if (dataType.equals("date") || dataType.equals("datetime") || dataType.equals("timestamp")) { sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"params != null and params.{0}Begin != null and params.{0}Begin != ''''\"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} >= #'{'params.{0}Begin'}'", columnNameItem)); sringBuilderAppend(mapperSB, 1, " </if>"); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"params != null and params.{0}End != null and params.{0}End != ''''\"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} <= #'{'params.{0}End'}'", columnNameItem)); sringBuilderAppend(mapperSB, 1, " </if>"); } else { String Operate = getOperate(columnNameItem, dataType); if (Operate.equals("=")) { sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"{0} != null \"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} = #'{'{0}'}'", columnNameItem)); } else if (Operate.equals("equals")){ sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"{0} != null and {0} != '''' \"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} = #'{'{0}'}'", columnNameItem)); } else { sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"{0} != null and {0} != ''''\"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <bind name=\"{0}Pattern\" value=\"''%'' + {0} + ''%''\" />", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} like #'{'{0}Pattern'}'", columnNameItem)); } sringBuilderAppend(mapperSB, 1, " </if>"); } } } sringBuilderAppend(mapperSB, 1, " </where>"); sringBuilderAppend(mapperSB, 2, " </select>"); //生成 selectListEntityByEqual 方法 sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <select id=\"selectListEntityByEqual\" resultType=\"{0}.domain.{1}\">", packageName, modelName)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" SELECT {0} ", columnNameSB.toString())); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" FROM {0}", tableName)); sringBuilderAppend(mapperSB, 1, " <where>"); for(Map<String, Object> columnMap : columnList) { if (columnMap.get("TABLE_NAME").equals(tableName)) { String dataType = getStringValue(columnMap.get("DATA_TYPE")); String columnNameItem = getStringValue(columnMap.get("COLUMN_NAME")); if (columnNameItem.toLowerCase().equals("companyid") || columnNameItem.toLowerCase().equals("companycode")) { sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"{0}List != null and {0}List.size() > 0 \"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} in ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <foreach collection=\"{0}List\" item=\"{0}Item\" open=\"(\" separator=\",\" close=\")\">", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" #'{'{0}Item'}'", columnNameItem)); sringBuilderAppend(mapperSB, 1, " </foreach>"); sringBuilderAppend(mapperSB, 1, " </if>"); } sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"{0} != null\"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} = #'{'{0}'}'", columnNameItem)); sringBuilderAppend(mapperSB, 1, " </if>"); } } sringBuilderAppend(mapperSB, 1, " </where>"); sringBuilderAppend(mapperSB, 2, " </select>"); //生成 selectListMapByEqual 方法 sringBuilderAppend(mapperSB, 1, " <select id=\"selectListMapByEqual\" resultType=\"java.util.HashMap\">"); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" SELECT $'{'columns'}' FROM {0}", tableName)); sringBuilderAppend(mapperSB, 1, " <where>"); for(Map<String, Object> columnMap : columnList) { if (columnMap.get("TABLE_NAME").equals(tableName)) { String dataType = getStringValue(columnMap.get("DATA_TYPE")); String columnNameItem = getStringValue(columnMap.get("COLUMN_NAME")); if (columnNameItem.toLowerCase().equals("companyid") || columnNameItem.toLowerCase().equals("companycode")) { sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"condition.{0}List != null and condition.{0}List.size() > 0 \"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} in ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <foreach collection=\"condition.{0}List\" item=\"{0}Item\" open=\"(\" separator=\",\" close=\")\">", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" #'{'{0}Item'}'", columnNameItem)); sringBuilderAppend(mapperSB, 1, " </foreach>"); sringBuilderAppend(mapperSB, 1, " </if>"); } sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"condition.{0} != null\"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} = #'{'condition.{0}'}'", columnNameItem)); sringBuilderAppend(mapperSB, 1, " </if>"); } } sringBuilderAppend(mapperSB, 1, " </where>"); sringBuilderAppend(mapperSB, 2, " </select>"); //生成 selectEntityById 方法 sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <select id=\"selectEntityById\" resultType=\"{0}.domain.{1}\">", packageName, modelName)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" SELECT {0} FROM {1} WHERE id = #'{'id'}'", columnNameSB.toString(), tableName)); sringBuilderAppend(mapperSB, 2, " </select>"); //生成 selectFirstEntity 方法 sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <select id=\"selectFirstEntity\" resultType=\"{0}.domain.{1}\">", packageName, modelName)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" SELECT {0} ", columnNameSB.toString())); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" FROM {0}", tableName)); sringBuilderAppend(mapperSB, 1, " <where>"); for(Map<String, Object> columnMap : columnList) { if (columnMap.get("TABLE_NAME").equals(tableName)) { String dataType = getStringValue(columnMap.get("DATA_TYPE")); String columnNameItem = getStringValue(columnMap.get("COLUMN_NAME")); if (columnNameItem.toLowerCase().equals("companyid") || columnNameItem.toLowerCase().equals("companycode")) { sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"{0}List != null and {0}List.size() > 0 \"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} in ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <foreach collection=\"{0}List\" item=\"{0}Item\" open=\"(\" separator=\",\" close=\")\">", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" #'{'{0}Item'}'", columnNameItem)); sringBuilderAppend(mapperSB, 1, " </foreach>"); sringBuilderAppend(mapperSB, 1, " </if>"); } sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"{0} != null\"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} = #'{'{0}'}'", columnNameItem)); sringBuilderAppend(mapperSB, 1, " </if>"); } } sringBuilderAppend(mapperSB, 1, " </where>"); sringBuilderAppend(mapperSB, 1, " LIMIT 1 "); sringBuilderAppend(mapperSB, 2, " </select>"); //生成 selectFirstMap 方法 sringBuilderAppend(mapperSB, 1, " <select id=\"selectFirstMap\" resultType=\"java.util.HashMap\">"); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" SELECT $'{'columns'}' FROM {0}", tableName)); sringBuilderAppend(mapperSB, 1, " <where>"); for(Map<String, Object> columnMap : columnList) { if (columnMap.get("TABLE_NAME").equals(tableName)) { String dataType = getStringValue(columnMap.get("DATA_TYPE")); String columnNameItem = getStringValue(columnMap.get("COLUMN_NAME")); if (columnNameItem.toLowerCase().equals("companyid") || columnNameItem.toLowerCase().equals("companycode")) { sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"condition.{0}List != null and condition.{0}List.size() > 0 \"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} in ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <foreach collection=\"condition.{0}List\" item=\"{0}Item\" open=\"(\" separator=\",\" close=\")\">", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" #'{'{0}Item'}'", columnNameItem)); sringBuilderAppend(mapperSB, 1, " </foreach>"); sringBuilderAppend(mapperSB, 1, " </if>"); } sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"condition.{0} != null\"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} = #'{'condition.{0}'}'", columnNameItem)); sringBuilderAppend(mapperSB, 1, " </if>"); } } sringBuilderAppend(mapperSB, 1, " </where>"); sringBuilderAppend(mapperSB, 1, " LIMIT 1 "); sringBuilderAppend(mapperSB, 2, " </select>"); //生成 insert 方法 sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <insert id=\"insert\" parameterType=\"{0}.domain.{1}\" keyProperty=\"id\" useGeneratedKeys=\"true\" >", packageName, modelName)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" INSERT INTO {0} ", tableName)); sringBuilderAppend(mapperSB, 1, " <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">"); for(Map<String, Object> columnMap : columnList) { if (columnMap.get("TABLE_NAME").equals(tableName)) { String columnNameItem = getStringValue(columnMap.get("COLUMN_NAME")); if (columnNameItem.equals("id")) continue;; sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"{0} != null\"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" {0}, ", columnNameItem)); sringBuilderAppend(mapperSB, 1, " </if>"); } } sringBuilderAppend(mapperSB, 1, " </trim>"); sringBuilderAppend(mapperSB, 1, " <trim prefix=\" values (\" suffix=\")\" suffixOverrides=\",\">"); for(Map<String, Object> columnMap : columnList) { if (columnMap.get("TABLE_NAME").equals(tableName)) { String dataType = getStringValue(columnMap.get("DATA_TYPE")); String columnNameItem = getStringValue(columnMap.get("COLUMN_NAME")); if (columnNameItem.equals("id")) continue;; sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"{0} != null\"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" #'{'{0}, jdbcType={1}'}', ", columnNameItem, convertJdbcType(dataType))); sringBuilderAppend(mapperSB, 1, " </if>"); } } sringBuilderAppend(mapperSB, 1, " </trim>"); sringBuilderAppend(mapperSB, 2, " </insert>"); //生成 updateByModel 方法 sringBuilderAppend(mapperSB, 1, " <update id=\"updateByModel\">"); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" UPDATE {0} ", tableName)); sringBuilderAppend(mapperSB, 1, " <set>"); for(Map<String, Object> columnMap : columnList) { if (columnMap.get("TABLE_NAME").equals(tableName)) { String dataType = getStringValue(columnMap.get("DATA_TYPE")); String columnNameItem = getStringValue(columnMap.get("COLUMN_NAME")); if (columnNameItem.equals("id")) continue;; sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"{0} != null\"> ", columnMap.get("COLUMN_NAME"))); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" {0} = #'{'{0}, jdbcType={1}'}', ", columnNameItem, convertJdbcType(dataType))); sringBuilderAppend(mapperSB, 1, " </if>"); } } sringBuilderAppend(mapperSB, 1, " </set>"); sringBuilderAppend(mapperSB, 1, " WHERE id = #{id,jdbcType=INTEGER}"); sringBuilderAppend(mapperSB, 2, " </update>"); //生成 updateByCondition 方法 sringBuilderAppend(mapperSB, 1, " <update id=\"updateByCondition\">"); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" UPDATE {0} ", tableName)); sringBuilderAppend(mapperSB, 1, " <set>"); for(Map<String, Object> columnMap : columnList) { if (columnMap.get("TABLE_NAME").equals(tableName)) { String dataType = getStringValue(columnMap.get("DATA_TYPE")); String columnNameItem = getStringValue(columnMap.get("COLUMN_NAME")); if (columnNameItem.equals("id")) continue;; sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"record.{0} != null\"> ", columnMap.get("COLUMN_NAME"))); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" {0} = #'{'record.{0}, jdbcType={1}'}', ", columnNameItem, convertJdbcType(dataType))); sringBuilderAppend(mapperSB, 1, " </if>"); } } sringBuilderAppend(mapperSB, 1, " </set>"); sringBuilderAppend(mapperSB, 1, " <where>"); for(Map<String, Object> columnMap : columnList) { if (columnMap.get("TABLE_NAME").equals(tableName)) { String columnNameItem = getStringValue(columnMap.get("COLUMN_NAME")); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"condition.{0} != null\"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} = #'{'condition.{0}'}'", columnNameItem)); sringBuilderAppend(mapperSB, 1, " </if>"); } } sringBuilderAppend(mapperSB, 1, " </where>"); sringBuilderAppend(mapperSB, 2, " </update>"); //生成 delete 方法 sringBuilderAppend(mapperSB, 1, " <delete id=\"deleteById\"> "); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" DELETE FROM {0} WHERE id = #'{'id, jdbcType=INTEGER'}' ", tableName)); sringBuilderAppend(mapperSB, 2, " </delete>"); //生成 delete 方法 sringBuilderAppend(mapperSB, 1, " <delete id=\"deleteByCondition\"> "); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" DELETE FROM {0} ", tableName)); sringBuilderAppend(mapperSB, 1, " <where>"); for(Map<String, Object> columnMap : columnList) { if (columnMap.get("TABLE_NAME").equals(tableName)) { String columnNameItem = getStringValue(columnMap.get("COLUMN_NAME")); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" <if test=\"{0} != null\"> ", columnNameItem)); sringBuilderAppend(mapperSB, 1, MessageFormat.format(" AND {0} = #'{'{0}'}'", columnNameItem)); sringBuilderAppend(mapperSB, 1, " </if>"); } } sringBuilderAppend(mapperSB, 1, " </where>"); sringBuilderAppend(mapperSB, 2, " </delete>"); sringBuilderAppend(mapperSB, 2, " </mapper>"); if (mapperSB.length() > 0) { createFile(directory, modelName + "MapperAuto.xml", mapperSB.toString()); mapperSB.delete(0, mapperSB.length()); columnNameSB.delete(0, columnNameSB.length()); // 输出数据 System.out.println(MessageFormat.format("生成: {0}MapperAuto.xml", modelName)); } } System.out.println("====================生成Mapper完成===================================="); } // private static void createDao (List<Map<String, Object>> tableList, List<Map<String, Object>> columnList, Map<String, String> packageNames) // { // System.out.println("====================开始生成Dao===================================="); // // String tableName = ""; // String packageName = null; // String modelName = null; // String humpName = null; // String directory = null; // // for(Map<String, Object> tableMap : tableList) // { // tableName = getStringValue(tableMap.get("TABLE_NAME")); // packageName = packageNames.get(tableName); // modelName = underlineConvertUpper(tableName); // // if (packageName == null) continue; // directory = "src/main/java/com/huaheng/pc/" + packageName.split("\\.")[3] +"/"+ modelName +"/mapper"; // StringBuilder sb = new StringBuilder(); // // modelName = underlineConvertUpper(getStringValue(tableMap.get("TABLE_NAME"))); // String mapperName = modelName + "MapperAuto"; // // sringBuilderAppend(sb, 2, "package com.huaheng.wms.dao.db1.autogeneration;"); // // sringBuilderAppend(sb, 1, MessageFormat.format("import com.huaheng.wms.model.{0};", modelName)); // sringBuilderAppend(sb, 1, "import org.apache.ibatis.annotations.Param;"); // sringBuilderAppend(sb, 1, "import java.util.List;"); // sringBuilderAppend(sb, 2, "import java.util.Map;"); // // sringBuilderAppend(sb, 2, MessageFormat.format("public interface {0} '{'", mapperName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" List<{0}> selectListEntityByLike({0} condition);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" List<{0}> selectListEntityByEqual({0} condition);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" List<Map<String, Object>> selectListMapByEqual(@Param(\"columns\") String columns, @Param(\"condition\") {0} condition);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" {0} selectEntityById(Integer id);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" {0} selectFirstEntity({0} condition);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" Map<String, Object> selectFirstMap(@Param(\"columns\") String columns, @Param(\"condition\") {0} condition);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" int insert({0} record);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" int updateByModel({0} record);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" int updateByCondition(@Param(\"record\") {0} record, @Param(\"condition\") {0} condition);", modelName)); // sringBuilderAppend(sb, 2, " int deleteById(Integer id);"); // sringBuilderAppend(sb, 2, MessageFormat.format(" int deleteByCondition({0} condition);", modelName)); // sringBuilderAppend(sb, 2, "}"); // // if (sb.length() > 0) // { // createFile(directory, mapperName + ".java", sb.toString()); // sb.delete(0, sb.length()); // // 输出数据 // System.out.println(MessageFormat.format("生成 Dao:{0} ", mapperName)); // } // } // // System.out.println("====================生成Dao完成===================================="); // } // private static void createService (List<Map<String, Object>> tableList) // { // System.out.println("====================开始生成Service===================================="); // // String directory = "src/main/java/com/huaheng/wms/service/autogeneration"; // StringBuilder sb = new StringBuilder(); // // for(Map<String, Object> tableMap : tableList) // { // String modelName = underlineConvertUpper(getStringValue(tableMap.get("TABLE_NAME"))); // String serviceName = modelName + "Service"; // // sringBuilderAppend(sb, 2, "package com.huaheng.wms.service.autogeneration;"); // // sringBuilderAppend(sb, 1, MessageFormat.format("import com.huaheng.wms.model.{0};", modelName)); // sringBuilderAppend(sb, 1, "import java.util.List;"); // sringBuilderAppend(sb, 2, "import java.util.Map;"); // // sringBuilderAppend(sb, 2, MessageFormat.format("public interface {0} '{'", serviceName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" List<{0}> selectListEntityByLike({0} condition);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" List<{0}> selectListEntityByEqual({0} condition);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" {0} selectFirstEntity({0} condition);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" {0} selectEntityById(Integer id);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" List<Map<String, Object>> selectListMapByEqual(String columnList, {0} condition);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" Map<String, Object> selectFirstMap(String columnList, {0} condition);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" int insert({0} record);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" int updateByModel({0} record);", modelName)); // sringBuilderAppend(sb, 2, MessageFormat.format(" int updateByCondition({0} record, {0} condition);", modelName)); // sringBuilderAppend(sb, 2, " int deleteById(Integer id);"); // sringBuilderAppend(sb, 2, MessageFormat.format(" int deleteByCondition({0} condition);", modelName)); // sringBuilderAppend(sb, 2, "}"); // // if (sb.length() > 0) // { // createFile(directory, serviceName + ".java", sb.toString()); // sb.delete(0, sb.length()); // // 输出数据 // System.out.println(MessageFormat.format("生成 Service:{0} ", serviceName)); // } // } // // System.out.println("====================生成Service完成===================================="); // } // private static void createServiceImpl (List<Map<String, Object>> tableList) // { // System.out.println("====================开始生成ServiceImpl===================================="); // // String directory = "src/main/java/com/huaheng/wms/serviceImpl/autogeneration/"; // StringBuilder sb = new StringBuilder(); // // for(Map<String, Object> tableMap : tableList) // { // String modelName = underlineConvertUpper(getStringValue(tableMap.get("TABLE_NAME"))); // String ServiceImplName = modelName + "ServiceImpl"; // // sringBuilderAppend(sb, 2, "package com.huaheng.wms.serviceImpl.autogeneration;"); // // sringBuilderAppend(sb, 1, MessageFormat.format("import com.huaheng.wms.model.{0};", modelName)); // sringBuilderAppend(sb, 1, MessageFormat.format("import com.huaheng.wms.dao.db1.autogeneration.{0}mapper;", modelName)); // sringBuilderAppend(sb, 1, MessageFormat.format("import com.huaheng.wms.service.autogeneration.{0}Service;", modelName)); // sringBuilderAppend(sb, 1, "import com.github.pagehelper.PageHelper;"); // sringBuilderAppend(sb, 1, "import org.springframework.stereotype.Service;"); // sringBuilderAppend(sb, 1, "import javax.annotation.Resource;"); // sringBuilderAppend(sb, 1, "import java.util.List;"); // sringBuilderAppend(sb, 2, "import java.util.Map;"); // // sringBuilderAppend(sb, 1, "@Service"); // sringBuilderAppend(sb, 2, MessageFormat.format("public class {0}ServiceImpl implements {0}Service '{'", modelName)); // // sringBuilderAppend(sb, 1, " @Resource"); // sringBuilderAppend(sb, 2, MessageFormat.format(" private {0}AutoMapper aotuMapper;", modelName)); // // sringBuilderAppend(sb, 1, MessageFormat.format(" public List<{0}> selectListEntityByLike({0} condition) '{'", modelName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" return aotuMapper.selectListEntityByLike(condition);", modelName)); // sringBuilderAppend(sb, 2, " }"); // // sringBuilderAppend(sb, 1, MessageFormat.format(" public List<{0}> selectListEntityByEqual({0} condition) '{'", modelName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" return aotuMapper.selectListEntityByEqual(condition);", modelName)); // sringBuilderAppend(sb, 2, " }"); // // sringBuilderAppend(sb, 1, MessageFormat.format(" public {0} selectFirstEntity({0} condition) '{'", modelName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" {0} item = aotuMapper.selectFirstEntity(condition);", modelName)); // sringBuilderAppend(sb, 1, " return item;"); // sringBuilderAppend(sb, 2, " }"); // // sringBuilderAppend(sb, 1, MessageFormat.format(" public {0} selectEntityById(Integer id) '{'", modelName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" return aotuMapper.selectEntityById(id);", modelName)); // sringBuilderAppend(sb, 2, " }"); // // sringBuilderAppend(sb, 1, MessageFormat.format(" public List<Map<String, Object>> selectListMapByEqual(String columns, {0} condition) '{'", modelName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" return aotuMapper.selectListMapByEqual(columns, condition);", modelName)); // sringBuilderAppend(sb, 2, " }"); // // sringBuilderAppend(sb, 1, MessageFormat.format(" public Map<String, Object> selectFirstMap(String columns, {0} condition) '{'", modelName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" Map<String, Object> item = aotuMapper.selectFirstMap(columns, condition);", modelName)); // sringBuilderAppend(sb, 1, " return item;"); // sringBuilderAppend(sb, 2, " }"); // // sringBuilderAppend(sb, 1, MessageFormat.format(" public int insert({0} record) '{'", modelName)); // sringBuilderAppend(sb, 1, " return aotuMapper.insert(record);"); // sringBuilderAppend(sb, 2, " }"); // // sringBuilderAppend(sb, 1, MessageFormat.format(" public int updateByModel({0} record) '{'", modelName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" return aotuMapper.updateByModel(record);", modelName)); // sringBuilderAppend(sb, 2, " }"); // // sringBuilderAppend(sb, 1, MessageFormat.format(" public int updateByCondition({0} record, {0} condition) '{'", modelName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" return aotuMapper.updateByCondition(record, condition);", modelName)); // sringBuilderAppend(sb, 2, " }"); // // sringBuilderAppend(sb, 1, MessageFormat.format(" public int deleteById(Integer id) '{'", modelName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" return aotuMapper.deleteById(id);", modelName)); // sringBuilderAppend(sb, 2, " }"); // // sringBuilderAppend(sb, 1, MessageFormat.format(" public int deleteByCondition({0} condition) '{'", modelName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" return aotuMapper.deleteByCondition(condition);", modelName)); // sringBuilderAppend(sb, 2, " }"); // // sringBuilderAppend(sb, 2, "}"); // // if (sb.length() > 0) // { // createFile(directory, ServiceImplName + ".java", sb.toString()); // sb.delete(0, sb.length()); // // 输出数据 // System.out.println(MessageFormat.format("生成 ServiceImpl:{0} ", ServiceImplName)); // } // } // // System.out.println("====================生成ServiceImpl完成===================================="); // } // private static void createController (List<Map<String, Object>> tableList, List<Map<String, Object>> columnList) // { // System.out.println("====================开始生成Controller===================================="); // // String directory = "src/main/java/com/huaheng/wms/controller"; // StringBuilder sb = new StringBuilder(); // // for(Map<String, Object> tableMap : tableList) // { // String tableName = getStringValue(tableMap.get("TABLE_NAME")); // String modelName = underlineConvertUpper(tableName); // String humpName = FirstCharToLower(modelName); // String ServiceImplName = modelName + "Controller"; // String tableComment = getStringValue(tableMap.get("TABLE_COMMENT")); // List<String> columNameList = new ArrayList<String>(); // for(Map<String, Object> columnMap : columnList) // { // if (columnMap.get("TABLE_NAME").equals(tableName)) // { // columNameList.add(columnMap.get("COLUMN_NAME").toString()); // } // } // sringBuilderAppend(sb, 2, "package com.huaheng.wms.controller;"); // // sringBuilderAppend(sb, 1, "import com.huaheng.wms.core.aop.AnnotationLog;"); // sringBuilderAppend(sb, 1, "import com.huaheng.wms.core.ret.*;"); // sringBuilderAppend(sb, 1, "import com.huaheng.wms.core.utils.*;"); // sringBuilderAppend(sb, 1, MessageFormat.format("import com.huaheng.wms.model.{0};", modelName)); // sringBuilderAppend(sb, 1, MessageFormat.format("import com.huaheng.wms.service.autogeneration.{0}Service;", modelName)); // sringBuilderAppend(sb, 1, "import com.github.pagehelper.*;"); // sringBuilderAppend(sb, 1, "import org.springframework.validation.annotation.Validated;"); // sringBuilderAppend(sb, 1, "import org.springframework.web.bind.annotation.*;"); // sringBuilderAppend(sb, 1, "import io.swagger.annotations.*;"); // sringBuilderAppend(sb, 1, "import javax.annotation.Resource;"); // sringBuilderAppend(sb, 2, "import java.util.List;"); // // sringBuilderAppend(sb, 1, "@CrossOrigin"); // sringBuilderAppend(sb, 1, "@RestController"); // sringBuilderAppend(sb, 1, MessageFormat.format("@RequestMapping(\"/{0}\")", humpName)); // sringBuilderAppend(sb, 1, MessageFormat.format("@Api(tags = '{'\"{0}Controller\"'}', description = \"{1}操作接口\")", modelName, tableComment)); // sringBuilderAppend(sb, 2, MessageFormat.format("public class {0}Controller '{'", modelName)); // // sringBuilderAppend(sb, 1, " @Resource"); // sringBuilderAppend(sb, 2, MessageFormat.format(" private {0}Service {1}Service;", modelName, humpName)); // // 列表展示 // sringBuilderAppend(sb, 1, " @PostMapping(\"/list\")"); // sringBuilderAppend(sb, 1, MessageFormat.format(" @ApiOperation(\"{0}列表\")", tableComment)); // sringBuilderAppend(sb, 1, MessageFormat.format(" public RetResult<PageInfo<{1}>> list(@RequestBody @ApiParam(value=\"{0}对象\") {1} condition) throws Exception '{'", tableComment, modelName)); // if (columNameList.contains("deleted")) // sringBuilderAppend(sb, 1, " condition.setDeleted(false);"); // if (columNameList.contains("warehouseId")) // sringBuilderAppend(sb, 1, " condition.setWarehouseId(UserInfoUtils.getWarehouseId());"); // sringBuilderAppend(sb, 1, " PageHelper.startPage(condition.getPageNumber(), condition.getPageSize());"); // sringBuilderAppend(sb, 1, MessageFormat.format(" List<{0}> list = {1}Service.selectListEntityByLike(condition);", modelName, humpName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" PageInfo<{0}> pageInfo = new PageInfo<{0}>(list);", modelName)); // sringBuilderAppend(sb, 1, " return RetResponse.makeOKRsp(pageInfo);"); // sringBuilderAppend(sb, 2, " }"); // // 内容查看 // sringBuilderAppend(sb, 1, " @PostMapping(\"/selectById\")"); // sringBuilderAppend(sb, 1, MessageFormat.format(" @ApiOperation(\"{0}内容\")", tableComment)); // sringBuilderAppend(sb, 1, MessageFormat.format(" public RetResult<{0}> selectById(@RequestBody @ApiParam(value=\"{1}id\") Integer id) throws Exception '{'", modelName, tableComment)); // sringBuilderAppend(sb, 1, MessageFormat.format(" {0} item = {1}Service.selectEntityById(id);", modelName, humpName)); // sringBuilderAppend(sb, 1, " return RetResponse.makeOKRsp(item);"); // sringBuilderAppend(sb, 2, " }"); // //新增 // sringBuilderAppend(sb, 1, " @PostMapping(\"/insert\")"); // sringBuilderAppend(sb, 1, MessageFormat.format(" @ApiOperation(\"{0}添加\")", tableComment)); // sringBuilderAppend(sb, 1, MessageFormat.format(" @AnnotationLog(remark = \"{0}添加\")", tableComment)); // sringBuilderAppend(sb, 1, MessageFormat.format(" public RetResult<Integer> insert(@RequestBody @Validated @ApiParam(value=\"{0}对象\") {1} {2}) throws Exception '{' ", tableComment, modelName, humpName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" {0}.setId(null);", humpName)); // if (columNameList.contains("created")) // sringBuilderAppend(sb, 1, MessageFormat.format(" {0}.setCreated(null);", humpName)); // if (columNameList.contains("createdBy")) // sringBuilderAppend(sb, 1, MessageFormat.format(" {0}.setCreatedBy(UserInfoUtils.getCode());", humpName)); // if (columNameList.contains("lastUpdated")) // sringBuilderAppend(sb, 1, MessageFormat.format(" {0}.setLastUpdated(null);", humpName)); // if (columNameList.contains("lastUpdatedBy")) // sringBuilderAppend(sb, 1, MessageFormat.format(" {0}.setLastUpdatedBy(null);", humpName)); // if (columNameList.contains("enable")) // sringBuilderAppend(sb, 1, MessageFormat.format(" {0}.setEnable(true);", humpName)); // if (columNameList.contains("deleted")) // sringBuilderAppend(sb, 1, MessageFormat.format(" {0}.setDeleted(false);", humpName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" Integer state = {0}Service.insert({0});", humpName)); // sringBuilderAppend(sb, 1, " return RetResponse.makeOKRsp(state);"); // sringBuilderAppend(sb, 2, " }"); // //修改 // sringBuilderAppend(sb, 1, " @PostMapping(\"/update\")"); // sringBuilderAppend(sb, 1, MessageFormat.format(" @ApiOperation(\"{0}修改\")", tableComment)); // sringBuilderAppend(sb, 1, MessageFormat.format(" @AnnotationLog(remark = \"{0}修改\")", tableComment)); // sringBuilderAppend(sb, 1, MessageFormat.format(" public RetResult<Integer> update(@RequestBody @ApiParam(value=\"{0}对象\") {1} {2}) throws Exception '{' ", tableComment, modelName, humpName)); // if (columNameList.contains("created")) // sringBuilderAppend(sb, 1, MessageFormat.format(" {0}.setCreated(null);", humpName)); // if (columNameList.contains("createdBy")) // sringBuilderAppend(sb, 1, MessageFormat.format(" {0}.setCreatedBy(null);", humpName)); // if (columNameList.contains("lastUpdatedBy")) // sringBuilderAppend(sb, 1, MessageFormat.format(" {0}.setLastUpdatedBy(UserInfoUtils.getCode());", humpName)); // if (columNameList.contains("lastUpdated")) // sringBuilderAppend(sb, 1, MessageFormat.format(" {0}.setLastUpdated(null);", humpName)); // if (columNameList.contains("deleted")) // sringBuilderAppend(sb, 1, MessageFormat.format(" {0}.setDeleted(false);", humpName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" Integer state = {0}Service.updateByModel({0});", humpName)); // sringBuilderAppend(sb, 1, " return RetResponse.makeOKRsp(state);"); // sringBuilderAppend(sb, 2, " }"); // //删除 // sringBuilderAppend(sb, 1, " @PostMapping(\"/deleteById\")"); // sringBuilderAppend(sb, 1, MessageFormat.format(" @ApiOperation(\"{0}删除\")", tableComment)); // sringBuilderAppend(sb, 1, MessageFormat.format(" @AnnotationLog(remark = \"{0}删除\")", tableComment)); // sringBuilderAppend(sb, 1, MessageFormat.format(" public RetResult<Integer> deleteById(@RequestBody @ApiParam(value=\"{0}id\") Integer id) throws Exception '{' ", tableComment)); // if (columNameList.contains("deleted")) // { // sringBuilderAppend(sb, 1, MessageFormat.format(" {0} {1} = new {0}();", modelName, humpName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" {0}.setId(id);", humpName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" {0}.setDeleted(true);", humpName)); // sringBuilderAppend(sb, 1, MessageFormat.format(" Integer state = {0}Service.updateByModel({0});", humpName)); // } // else // { // sringBuilderAppend(sb, 1, MessageFormat.format(" Integer state = {1}Service.deleteById(id);", modelName, humpName)); // } // sringBuilderAppend(sb, 1, " return RetResponse.makeOKRsp(state);"); // sringBuilderAppend(sb, 2, " }"); // // sringBuilderAppend(sb, 2, "}"); // // if (sb.length() > 0) // { // createFile(directory, ServiceImplName + ".java", sb.toString()); // sb.delete(0, sb.length()); // columNameList.clear(); // // 输出数据 // System.out.println(MessageFormat.format("生成 Controller:{0} ", ServiceImplName)); // } // } // // System.out.println("====================生成Controller完成===================================="); // } /** * 根据SQL查询数据,并且返回List<Map<String, Object>> * @param sql * @return */ private static List<Map<String, Object>> getDataList(String sql) { System.out.println("====================开始生成List<Map<String, Object>>数据===================================="); // JDBC 驱动名及数据库 URL // String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; // 数据库的URL、用户名、密码,需要根据自己的设置 String DB_URL = "jdbc:mysql://172.16.29.45:3306/wms_v2?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&autoReconnect=true&failOverReadOnly=false"; String USER = "softhuaheng"; String PASS = "HHrobot123."; Connection conn = null; Statement stmt = null; List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>(); try{ // 注册 JDBC 驱动 // Class.forName("com.mysql.jdbc.Driver"); // 打开链接 conn = DriverManager.getConnection(DB_URL, USER, PASS); System.out.println("连接到数据库。。。。。。"); // 执行查询 stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); System.out.println("执行查询。。。。。。"); //获取架构,然后填充到 List<Map<String, Object>> ResultSetMetaData md = rs.getMetaData(); while (rs.next()) { Map<String, Object> rowData = new HashMap<String, Object>();//声明Map for (int i = 1; i <= md.getColumnCount(); i++) { rowData.put(md.getColumnName(i), rs.getObject(i)); //获取键名及值 } dataList.add(rowData); } stmt.close(); conn.close(); } catch(SQLException ex) { // 处理 JDBC 错误 System.out.println(ex.getMessage()); ex.printStackTrace(); } catch(Exception ex) { // 处理 Class.forName 错误 System.out.println(ex.getMessage()); ex.printStackTrace(); } finally { // 关闭资源 try { if(stmt!=null) stmt.close(); } catch(SQLException ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); } try { if(conn!=null) conn.close(); } catch(SQLException ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); } } System.out.println("====================开始返回List<Map<String, Object>>数据===================================="); return dataList; } /** * 写文件到指定位置 * @param path * @param fileName * @param content */ private static void createFile (String path, String fileName, String content) { File file = null; FileOutputStream outPut = null; OutputStreamWriter writer = null; try { file = new File(path); if(!file.isDirectory() || !file.exists()) file.mkdirs(); // 构建FileOutputStream对象,文件不存在会自动新建 outPut = new FileOutputStream(path + "/" + fileName); // 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk writer = new OutputStreamWriter(outPut, "UTF-8"); // 写入到缓冲区 writer.append(content); // 换行 writer.append("\r\n"); // 刷新缓存冲,写入到文件,如果下面已经没有写入的内容了,直接close也会写入 writer.flush(); } catch(FileNotFoundException ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); } catch(IOException ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); } finally { try { //关闭写入流,同时会把缓冲区内容写入文件,所以上面的注释掉 writer.close(); // 关闭输出流,释放系统资源 outPut.close(); } catch(IOException ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); } } } /*** * 去掉下划线,并且1.将首写字母大写 2.将首字母大写 * @param content * @return */ private static String underlineConvertUpper (String content) { if (content == null) return null; Boolean Uppper = true; StringBuilder sb = new StringBuilder(); if (content.length() > 0) { char[] contentChar = content.toCharArray(); for(int i=0; i<contentChar.length; i++) { if (contentChar[i] == '_') { Uppper = true; } else { if (contentChar[i] > 96 && Uppper) { sb.append((char) (contentChar[i] - 32)); } else { sb.append(contentChar[i]); } Uppper = false; } } } return sb.toString(); } private static String FirstCharToLower (String content) { char[] contentArray = content.toCharArray(); contentArray[0] = Character.toLowerCase(contentArray[0]); return new String(contentArray); } private static String FirstCharToUpper (String content) { char[] contentArray = content.toCharArray(); contentArray[0] = Character.toUpperCase(contentArray[0]); return new String(contentArray); } /** * 将SQL类型映射为Java类型 * @param SqlType * @return */ private static String sqlToModel (String SqlType) { switch(SqlType) { case "char" : case "varchar" : case "tinytext" : case "mediumtext" : case "text" : return "String"; case "tinyint" : return "Byte"; case "smallint" : return "Short"; case "mediumint" : case "int" : case "integer" : return "Integer"; case "bigint" : return "Long"; case "real" : case "float" : return "Float"; case "double" : return "Double"; case "numeric" : case "decimal" : return "BigDecimal"; case "bit" : return "Boolean"; case "time" : return "Time"; case "date" : case "datetime" : case "timestamp" : return "Date"; case "binary": case "varbinary": return "Byte[]"; default : return ""; } } private static String convertJdbcType (String sqlType) { if (sqlType == null) return null; String jdbcType = sqlType.toUpperCase(); if (jdbcType.equals("INT")) return "INTEGER"; else if (jdbcType.equals("DATETIME")) return "TIMESTAMP"; else return jdbcType; } /** * 在StringBuilder中增加换行 * @param sb * @param lineCount * @param content */ private static void sringBuilderAppend (StringBuilder sb, Integer lineCount, String content) { sb.append(content); for (int i=0; i< lineCount; i++) { sb.append(System.getProperty("line.separator")); } } /** * 将对象转为字符串 * @param object * @return */ private static String getStringValue(Object object) { if (object == null) return null; else return object.toString(); } /** * 将List<string>转化为字符串 * @param list * @param suffix * @return */ private static String convertString(List<String> list , String suffix) { StringBuilder sb = new StringBuilder(); for(String item : list) { sb.append(item + suffix); } sb.deleteCharAt(sb.length() - 1); return sb.toString(); } /** * 根据SQL数据类型来获取操作符 * @param SqlType * @return */ private static String getOperate(String columnName, String SqlType) { if (columnName.toLowerCase().indexOf("code") > -1 || columnName.toLowerCase().indexOf("type") > -1) { return "equals"; } switch(SqlType) { case "char" : case "varchar" : case "tinytext" : case "mediumtext" : case "text" : return "like"; default : return "="; } } private static String getIdentifier(String modelName, String columnName) { String tableName = modelName.replace("History",""); if (columnName.equals("firstStatus") || columnName.equals("lastStatus")) { if (tableName.equals("receiptHeader")) return "receiptHeaderStatus"; if (tableName.equals("shipmentHeader")) return "shipmentHeaderStatus"; } if(columnName.equals("type")) return tableName + "Type"; else return columnName; } private static Map<String, String> getPackages() { Map<String, String> packages = new HashMap<String, String>(); packages.put("company","com.huaheng.pc.general.company.Company"); packages.put("warehouse_company","com.huaheng.pc.general.company.WarehouseCompany"); packages.put("container","com.huaheng.pc.config.container.Container"); packages.put("container_type","com.huaheng.pc.config.containerType.ContainerType"); packages.put("customer","com.huaheng.pc.general.customer.Customer"); packages.put("cyclecount_adjust","com.huaheng.pc.inventoryHeader.adjustHeader.CyclecountAdjust"); packages.put("cyclecount_adjustdetail","com.huaheng.pc.inventoryHeader.adjustDetail.CyclecountAdjustDetail"); packages.put("cyclecount_detail","com.huaheng.pc.inventoryHeader.cycleCountDetail.CycleCountDetail"); packages.put("cyclecount_header","com.huaheng.pc.inventoryHeader.cycleCountHeader.CycleCountHeader"); packages.put("inventory","com.huaheng.pc.inventoryHeader.inventoryHeader.Inventory"); packages.put("inventory_transaction","com.huaheng.pc.inventoryHeader.inventoryTransaction.InventoryTransaction"); packages.put("location","com.huaheng.pc.config.location.Location"); packages.put("location_type","com.huaheng.pc.config.locationType.LocationType"); packages.put("material","com.huaheng.pc.config.material.Material"); packages.put("receipt_container_detail","com.huaheng.pc.receipt.receiptContainerDetail.ReceiptContainerDetail"); packages.put("receipt_container_header","com.huaheng.pc.receipt.receiptContainerHeader.ReceiptContainerHeader"); packages.put("receipt_detail","com.huaheng.pc.receipt.receiptDetail.ReceiptDetail"); packages.put("receipt_detail_history","com.huaheng.pc.receipt.receiptDetailHistory.ReceiptDetailHistory"); packages.put("receipt_header","com.huaheng.pc.receipt.receiptHeader.ReceiptHeader"); packages.put("receipt_header_history","com.huaheng.pc.receipt.receiptHeaderHistory.ReceiptHeaderHistory"); packages.put("shipment_container_detail","com.huaheng.pc.shipment.com.huaheng.pc.shipment.shipmentContainerDetail.ShipmentContainerDetail"); packages.put("shipment_container_header","com.huaheng.pc.shipment.com.huaheng.pc.shipment.shipmentContainerHeader.ShipmentContainerHeader"); packages.put("shipment_detail","com.huaheng.pc.shipment.shipmentDetail.ShipmentDetail"); packages.put("shipment_detail_history","com.huaheng.pc.shipment.shipmentDetailHistory.ShipmentDetailHistory"); packages.put("shipment_header","com.huaheng.pc.shipment.shipmentHeader.ShipmentHeader"); packages.put("shipment_header_history","com.huaheng.pc.shipment.shipmentHeaderHistory.ShipmentHeaderHistory"); packages.put("supplier","com.huaheng.pc.config.supplier.Supplier"); // packages.put("sys_config","system"); // packages.put("sys_dept","system"); // packages.put("sys_dict_data","system"); // packages.put("sys_dict_type","system"); // packages.put("sys_job","monitor"); // packages.put("sys_job_log","monitor"); // packages.put("sys_logininfor","monitor"); // packages.put("sys_menu","system"); // packages.put("sys_notice","system"); // packages.put("sys_oper_log","monitor"); // packages.put("sys_role","system"); // packages.put("sys_role_menu","system"); // packages.put("sys_user","system"); // packages.put("sys_user_company","system"); // packages.put("sys_user_online","system"); // packages.put("sys_user_role","system"); packages.put("task","com.huaheng.pc.task.task.Task"); packages.put("agvtask","com.huaheng.pc.task.agvTask.AgvTask"); packages.put("task_detail","com.huaheng.pc.task.taskDetail.TaskDetail"); packages.put("warehouse","com.huaheng.pc.general.warehouse.Warehouse"); packages.put("zone","com.huaheng.pc.config.zone.Zone"); packages.put("zone_capacity","com.huaheng.pc.config.zoneCapacity.ZoneCapacity"); packages.put("send_email","com.huaheng.common.mail.alarmmail.SendEmail"); packages.put("alarm_flow","com.huaheng.common.mail.alarmmail.AlarmFlow"); packages.put("alarm_type","com.huaheng.common.mail.alarmmail.AlarmType"); // packages.put("interface_ssp_detail","com.huaheng.pc.config.zone.domain.SSPdetail"); // packages.put("interface_ssp_header","com.huaheng.pc.config.zone.domain.SSPheader"); packages.put("container_capacity","com.huaheng.pc.config.containercapacity.ContainerCapacity"); return packages; } }