From 9c86a5a4b4a5f49baa7ea633fff1ba6d2e67e377 Mon Sep 17 00:00:00 2001 From: liyanqi <15181887205@163.com> Date: 星期三, 14 九月 2022 16:20:17 +0800 Subject: [PATCH] 修改自动生成代码工具 --- ycl-generator/pom.xml | 50 +++++++++ /dev/null | 5 - ycl-generator/src/main/java/com/ycl/MysqlGenerator.java | 201 ++++++++++++++++++++++++++++++++++++++++ ycl-generator/src/main/java/com/ycl/base/BaseController.java | 12 ++ 4 files changed, 260 insertions(+), 8 deletions(-) diff --git a/ycl-generator/pom.xml b/ycl-generator/pom.xml index ad07430..88b5a24 100644 --- a/ycl-generator/pom.xml +++ b/ycl-generator/pom.xml @@ -3,9 +3,10 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> - <groupId>com.ycl</groupId> - <artifactId>ycl-server</artifactId> - <version>1.0.0</version> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-parent</artifactId> + <version>2.7.0</version> + <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.ycl</groupId> @@ -21,6 +22,49 @@ <dependencies> <dependency> <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + </dependency> + <dependency> + <groupId>com.baomidou</groupId> + <artifactId>mybatis-plus-generator</artifactId> + <version>3.3.2</version> + </dependency> + + <dependency> + <groupId>com.baomidou</groupId> + <artifactId>mybatis-plus-boot-starter</artifactId> + <version>3.0-RELEASE</version> + </dependency> + + <!--Hutool Java宸ュ叿鍖�--> + <dependency> + <groupId>cn.hutool</groupId> + <artifactId>hutool-all</artifactId> + <version>5.8.0</version> + </dependency> + + <dependency> + <groupId>mysql</groupId> + <artifactId>mysql-connector-java</artifactId> + <version>8.0.29</version> + </dependency> + + <!--lombok渚濊禆--> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <optional>true</optional> + </dependency> + + <!-- freemarker 妯℃澘寮曟搸 --> + <dependency> + <groupId>org.freemarker</groupId> + <artifactId>freemarker</artifactId> + <version>2.3.23</version> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> diff --git a/ycl-generator/src/main/java/com/ycl/MyBatisPlusGenerator.java b/ycl-generator/src/main/java/com/ycl/MyBatisPlusGenerator.java deleted file mode 100644 index ccd89f2..0000000 --- a/ycl-generator/src/main/java/com/ycl/MyBatisPlusGenerator.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.ycl; - -import cn.hutool.core.util.StrUtil; -import cn.hutool.setting.dialect.Props; -import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; -import com.baomidou.mybatisplus.generator.AutoGenerator; -import com.baomidou.mybatisplus.generator.config.*; -import com.baomidou.mybatisplus.generator.config.po.LikeTable; -import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery; -import com.baomidou.mybatisplus.generator.config.rules.DateType; -import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; -import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine; - -import java.util.Collections; -import java.util.Scanner; - -/** - * MyBatisPlus浠g爜鐢熸垚鍣� - * Created by macro on 2020/8/20. - */ -public class MyBatisPlusGenerator { - - public static void main(String[] args) { - String projectPath = System.getProperty("user.dir"); - String moduleName = scanner("妯″潡鍚�"); - String[] tableNames = scanner("琛ㄥ悕锛屽涓嫳鏂囬�楀彿鍒嗗壊").split(","); - // 浠g爜鐢熸垚鍣� - AutoGenerator autoGenerator = new AutoGenerator(initDataSourceConfig()); - autoGenerator.global(initGlobalConfig(projectPath)); - autoGenerator.packageInfo(initPackageConfig(projectPath,moduleName)); - autoGenerator.injection(initInjectionConfig(projectPath, moduleName)); - autoGenerator.template(initTemplateConfig()); - autoGenerator.strategy(initStrategyConfig(tableNames)); - autoGenerator.execute(new VelocityTemplateEngine()); - } - - /** - * 璇诲彇鎺у埗鍙板唴瀹逛俊鎭� - */ - private static String scanner(String tip) { - Scanner scanner = new Scanner(System.in); - System.out.println(("璇疯緭鍏�" + tip + "锛�")); - if (scanner.hasNext()) { - String next = scanner.next(); - if (StrUtil.isNotEmpty(next)) { - return next; - } - } - throw new MybatisPlusException("璇疯緭鍏ユ纭殑" + tip + "锛�"); - } - - /** - * 鍒濆鍖栧叏灞�閰嶇疆 - */ - private static GlobalConfig initGlobalConfig(String projectPath) { - return new GlobalConfig.Builder() - .outputDir(projectPath + "/ycl-generator/src/main/java") - .author("lyq") - .disableOpenDir() - .enableSwagger() - .fileOverride() - .dateType(DateType.ONLY_DATE) - .build(); - } - - /** - * 鍒濆鍖栨暟鎹簮閰嶇疆 - */ - private static DataSourceConfig initDataSourceConfig() { - Props props = new Props("generator.properties"); - String url = props.getStr("dataSource.url"); - String username = props.getStr("dataSource.username"); - String password = props.getStr("dataSource.password"); - return new DataSourceConfig.Builder(url,username,password) - .dbQuery(new MySqlQuery()) - .build(); - } - - /** - * 鍒濆鍖栧寘閰嶇疆 - */ - private static PackageConfig initPackageConfig(String projectPath,String moduleName) { - Props props = new Props("generator.properties"); - return new PackageConfig.Builder() - .moduleName(moduleName) - .parent(props.getStr("package.base")) - .entity("entity") - .pathInfo(Collections.singletonMap(OutputFile.mapperXml, projectPath + "/ycl-generator/src/main/resources/mapper/" + moduleName)) - .build(); - } - - /** - * 鍒濆鍖栨ā鏉块厤缃� - */ - private static TemplateConfig initTemplateConfig() { - //鍙互瀵筩ontroller銆乻ervice銆乪ntity妯℃澘杩涜閰嶇疆 - return new TemplateConfig.Builder().build(); - } - - /** - * 鍒濆鍖栫瓥鐣ラ厤缃� - */ - private static StrategyConfig initStrategyConfig(String[] tableNames) { - StrategyConfig.Builder builder = new StrategyConfig.Builder(); - builder.entityBuilder() - .naming(NamingStrategy.underline_to_camel) - .columnNaming(NamingStrategy.underline_to_camel) - .enableLombok() - .formatFileName("%s") - .mapperBuilder() - .enableBaseResultMap() - .formatMapperFileName("%sMapper") - .formatXmlFileName("%sMapper") - .serviceBuilder() - .formatServiceFileName("%sService") - .formatServiceImplFileName("%sServiceImpl") - .controllerBuilder() - .enableRestStyle() - .formatFileName("%sController"); - //褰撹〃鍚嶄腑甯�*鍙锋椂鍙互鍚敤閫氶厤绗︽ā寮� - if (tableNames.length == 1 && tableNames[0].contains("*")) { - String[] likeStr = tableNames[0].split("_"); - String likePrefix = likeStr[0] + "_"; - builder.likeTable(new LikeTable(likePrefix)); - } else { - builder.addInclude(tableNames); - } - return builder.build(); - } - - /** - * 鍒濆鍖栬嚜瀹氫箟閰嶇疆 - */ - private static InjectionConfig initInjectionConfig(String projectPath, String moduleName) { - // 鑷畾涔夐厤缃� - return new InjectionConfig.Builder().build(); - } - -} \ No newline at end of file diff --git a/ycl-generator/src/main/java/com/ycl/MysqlGenerator.java b/ycl-generator/src/main/java/com/ycl/MysqlGenerator.java new file mode 100644 index 0000000..8597c31 --- /dev/null +++ b/ycl-generator/src/main/java/com/ycl/MysqlGenerator.java @@ -0,0 +1,201 @@ +package com.ycl; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableFill; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; +import com.ycl.base.BaseController; + + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +/** + * @author Lyq + * @version 1.0 + * @date 2022/9/14 + */ +public class MysqlGenerator { + private static final String PN_ENTITY = "entity"; + private static final String PN_CONTROLLER = "controller"; + private static final String PN_MAPPER = "mapper"; + private static final String PN_SERVICE = "service"; + private static final String PN_SERVICE_IMPL = "impl"; + private static final String PN_DELIMITER = "."; + + + /** + * <p> + * 璇诲彇鎺у埗鍙板唴瀹� + * </p> + */ + public static String scanner(String tip) { + Scanner scanner = new Scanner(System.in); + StringBuilder help = new StringBuilder(); + help.append("璇疯緭鍏�" + tip + "锛�"); + System.out.println(help.toString()); + if (scanner.hasNext()) { + String ipt = scanner.next(); + if (StringUtils.isNotEmpty(ipt)) { + return ipt; + } + } + throw new MybatisPlusException("璇疯緭鍏ユ纭殑" + tip + "锛�"); + } + + public static void main(String[] args) { + // 浠g爜鐢熸垚鍣� + AutoGenerator mpg = new AutoGenerator(); + + // 鍏ㄥ眬閰嶇疆 + GlobalConfig gc = new GlobalConfig(); + String projectPath = System.getProperty("user.dir"); + gc.setOutputDir(projectPath + "/ycl-generator/src/main/java"); + gc.setAuthor("lyq");//浣滆�� + gc.setBaseResultMap(true); //mapper.xml 鐢熸垚 ResultMap + gc.setBaseColumnList(true); //mapper.xml 鐢熸垚 ColumnList +// gc.setSwagger2(true); + gc.setOpen(false); + // gc.setSwagger2(true); 瀹炰綋灞炴�� Swagger2 娉ㄨВ + // 鏄惁瑕嗙洊宸叉湁鏂囦欢 + gc.setFileOverride(true); + mpg.setGlobalConfig(gc); + + // 鏁版嵁婧愰厤缃� + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl("jdbc:mysql://42.193.1.25:3306/sccg?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false"); + // dsc.setSchemaName("public"); + dsc.setDriverName("com.mysql.cj.jdbc.Driver"); + dsc.setUsername("root"); + dsc.setPassword("321$YcYl@1970!"); + mpg.setDataSource(dsc); + + // 鍖呴厤缃� + PackageConfig pc = new PackageConfig(); +// pc.setModuleName(scanner("妯″潡鍚�")); + pc.setModuleName(null); + pc.setParent("com.ycl"); + String packageName = scanner("璇疯緭鍏ュ寘鍚�"); + //鑷畾涔夋墍鍦ㄥ寘鐨勫悕绉� 鍩烘湰娌″繀瑕� + pc.setEntity(PN_ENTITY + PN_DELIMITER + packageName); + pc.setController(PN_CONTROLLER + PN_DELIMITER + packageName); + pc.setMapper(PN_MAPPER + PN_DELIMITER + packageName); + pc.setService(PN_SERVICE + PN_DELIMITER + packageName); + pc.setServiceImpl(PN_SERVICE + PN_DELIMITER + packageName + PN_DELIMITER + PN_SERVICE_IMPL); + + //pc.setMapper("com.cikers.ps.mapper"); + + mpg.setPackageInfo(pc); + // 鑷畾涔夐厤缃� + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + // to do nothing + } + }; + + // 濡傛灉妯℃澘寮曟搸鏄� freemarker + String templatePath = "/templates/mapper.xml.ftl"; + // 濡傛灉妯℃澘寮曟搸鏄� velocity +// String templatePath = "/templates/mapper.xml.vm"; + + // 鑷畾涔夎緭鍑洪厤缃� + List<FileOutConfig> focList = new ArrayList<>(); + // 鑷畾涔夐厤缃細琚紭鍏堣緭鍑� + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + // 鑷畾涔夎緭鍑烘枃浠跺悕 锛� 濡傛灉浣� Entity 璁剧疆浜嗗墠鍚庣紑銆佹澶勬敞鎰� xml 鐨勫悕绉颁細璺熺潃鍙戠敓鍙樺寲锛侊紒 +// return projectPath + "/coinyee-contract-generator/src/main/resources/mapper/" + pc.getModuleName() +// + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; + return projectPath + "/ycl-generator/src/main/resources/mapper/" + + packageName + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; + } + }); + /* + cfg.setFileCreate(new IFileCreate() { + @Override + public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) { + // 鍒ゆ柇鑷畾涔夋枃浠跺す鏄惁闇�瑕佸垱寤� + checkDir("璋冪敤榛樿鏂规硶鍒涘缓鐨勭洰褰曪紝鑷畾涔夌洰褰曠敤"); + if (fileType == FileType.MAPPER) { + // 宸茬粡鐢熸垚 mapper 鏂囦欢鍒ゆ柇瀛樺湪锛屼笉鎯抽噸鏂扮敓鎴愯繑鍥� false + return !new File(filePath).exists(); + } + // 鍏佽鐢熸垚妯℃澘鏂囦欢 + return true; + } + }); + */ + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + // 閰嶇疆妯℃澘 + TemplateConfig templateConfig = new TemplateConfig(); + + // 閰嶇疆鑷畾涔夎緭鍑烘ā鏉� + //鎸囧畾鑷畾涔夋ā鏉胯矾寰勶紝娉ㄦ剰涓嶈甯︿笂.ftl/.vm, 浼氭牴鎹娇鐢ㄧ殑妯℃澘寮曟搸鑷姩璇嗗埆 + // templateConfig.setEntity("templates/entity2.java"); + // templateConfig.setService(); + // templateConfig.setController(); + + templateConfig.setXml(null); + mpg.setTemplate(templateConfig); + + // 绛栫暐閰嶇疆 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + //strategy.setSuperEntityClass("浣犺嚜宸辩殑鐖剁被瀹炰綋,娌℃湁灏变笉鐢ㄨ缃�!"); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + //鍘婚櫎瀛楁鍓嶇紑 + strategy.setFieldPrefix(""); + + List<TableFill> tableFills = new ArrayList<>(); + + TableFill createTimeFill = new TableFill("createTime", FieldFill.INSERT); + TableFill modifiedTimeFill = new TableFill("modifiedTime", FieldFill.UPDATE); + + tableFills.add(createTimeFill); + tableFills.add(modifiedTimeFill); + +// strategy.setEntityTableFieldAnnotationEnable(true); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + //strategy.setSuperEntityClass("浣犺嚜宸辩殑鐖剁被瀹炰綋,娌℃湁灏变笉鐢ㄨ缃�!"); + strategy.setSuperControllerClass(BaseController.class); +// strategy.setSuperEntityClass(BaseEntity.class); + strategy.setSuperEntityColumns("createTime", "lastModify", "isDeleted"); + strategy.setTableFillList(tableFills); + strategy.setEntityBooleanColumnRemoveIsPrefix(false); + strategy.setLogicDeleteFieldName("isDeleted"); + + strategy.setVersionFieldName("version"); + strategy.setEntityTableFieldAnnotationEnable(true); + + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + // 鍏叡鐖剁被 + // strategy.setSuperControllerClass("浣犺嚜宸辩殑鐖剁被鎺у埗鍣�,娌℃湁灏变笉鐢ㄨ缃�!"); + // 鍐欎簬鐖剁被涓殑鍏叡瀛楁 +// strategy.setSuperEntityColumns("id"); + String[] split = scanner("琛ㄥ悕锛屽涓嫳鏂囬�楀彿鍒嗗壊").split(","); + strategy.setInclude(split); + strategy.setControllerMappingHyphenStyle(true); +// strategy.setTablePrefix(pc.getModuleName() + "_"); + //鍘绘帀琛ㄥ墠缂� + strategy.setTablePrefix("ums_"); + mpg.setStrategy(strategy); + mpg.setTemplateEngine(new FreemarkerTemplateEngine()); + mpg.execute(); + } +} diff --git a/ycl-generator/src/main/java/com/ycl/base/BaseController.java b/ycl-generator/src/main/java/com/ycl/base/BaseController.java new file mode 100644 index 0000000..117f23e --- /dev/null +++ b/ycl-generator/src/main/java/com/ycl/base/BaseController.java @@ -0,0 +1,12 @@ +package com.ycl.base; + +import org.springframework.web.bind.annotation.RestController; + +/** + * @author Lyq + * @version 1.0 + * @date 2022/9/14 + */ +@RestController +public class BaseController { +} diff --git a/ycl-generator/src/main/resources/generator.properties b/ycl-generator/src/main/resources/generator.properties deleted file mode 100644 index 53b55d9..0000000 --- a/ycl-generator/src/main/resources/generator.properties +++ /dev/null @@ -1,5 +0,0 @@ -dataSource.url=jdbc:mysql://42.193.1.25:3306/sccg?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false -dataSource.driverName=com.mysql.cj.jdbc.Driver -dataSource.username=root -dataSource.password=321$YcYl@1970! -package.base=com.ycl \ No newline at end of file -- Gitblit v1.8.0