From 8d92ee84b2212b54b77f836bfd50e304035aad3f Mon Sep 17 00:00:00 2001 From: suger <304902140@qq.com> Date: Thu, 9 May 2019 14:16:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BB=A3=E7=A0=81=E7=94=9F?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qmrz/generator/MapperGenerator.java | 48 +++++++++- .../com/qmrz/generator/Service2Generator.java | 47 +++++++++ .../qmrz/generator/Service2ImplGenerator.java | 47 +++++++++ .../src/main/resources/application.yml | 7 +- .../src/main/resources/template/mapper2.ftl | 96 +++++++++++++++++++ .../src/main/resources/template/service.ftl | 3 - .../src/main/resources/template/service2.ftl | 10 ++ .../main/resources/template/service2Impl.ftl | 17 ++++ .../main/resources/template/serviceImpl.ftl | 4 - .../src/test/TestCodeGenerator.java | 29 +++++- pom.xml | 2 +- 11 files changed, 291 insertions(+), 19 deletions(-) create mode 100644 code-generator/src/main/java/com/qmrz/generator/Service2Generator.java create mode 100644 code-generator/src/main/java/com/qmrz/generator/Service2ImplGenerator.java create mode 100644 code-generator/src/main/resources/template/mapper2.ftl create mode 100644 code-generator/src/main/resources/template/service2.ftl create mode 100644 code-generator/src/main/resources/template/service2Impl.ftl diff --git a/code-generator/src/main/java/com/qmrz/generator/MapperGenerator.java b/code-generator/src/main/java/com/qmrz/generator/MapperGenerator.java index 804a46e..f306b9e 100644 --- a/code-generator/src/main/java/com/qmrz/generator/MapperGenerator.java +++ b/code-generator/src/main/java/com/qmrz/generator/MapperGenerator.java @@ -1,5 +1,6 @@ package com.qmrz.generator; +import com.qmrz.exception.ABException; import com.qmrz.service.TableService; import com.qmrz.utils.CGHelper; import com.qmrz.utils.Fn; @@ -7,6 +8,7 @@ import com.qmrz.utils.MapUtil; import com.qmrz.utils.SpringContextUtil; import org.apache.commons.lang.StringUtils; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -28,17 +30,53 @@ public class MapperGenerator { List tableList = tableService.getTableList(dbName); List columnList = tableService.getColumnList(dbName); - Map result = columnList.stream().collect(Collectors.groupingBy(map -> map.get("table_name"), Collectors.toList())); + Map> result = columnList.stream().collect(Collectors.groupingBy(map -> Fn.toString(map.get("table_name")), Collectors.toList())); - CGHelper cgHelper = new CGHelper("mapper.ftl", dbName); + CGHelper cgHelper = new CGHelper("mapper2.ftl", dbName); tableList.forEach(item -> { String table_name = item.get("table_name").toString(); String table_name2 = Fn.firstUpperCase(table_name); - item.put("columnList", result.get(table_name)); + + List tmpColumnList = result.get(table_name); + + List orderByList = new ArrayList<>(); + tmpColumnList.stream().filter(i -> { + String tmpColumnName = Fn.toString(i.get("column_name")); + if ("createdatetime".equals(tmpColumnName)) { + orderByList.add("t."+tmpColumnName + " desc"); + return true; + } + return false; + }).findFirst(); + + StringBuilder primaryKeyName = new StringBuilder(); + + tmpColumnList.stream().filter(i -> { + if ("PRI".equals(Fn.toString(i.get("column_key")))) { + orderByList.add("t."+Fn.toString(i.get("column_name")) + " desc"); + primaryKeyName.append(Fn.toString(i.get("column_name"))); + return true; + } + return false; + }).findFirst(); + + if (primaryKeyName.length() == 0) { + throw new ABException("表 " + table_name + " 没有主键"); + } + + String orderBy = ""; + + if (orderByList.size() > 0) { + orderBy = "order by " + String.join(",", orderByList); + } + + item.put("columnList", tmpColumnList); item.put("dbname", dbName); - item.put("table_name2",table_name2);//首字母大写 - cgHelper.generator("mapper", table_name2 + "Mapper.xml", item); + item.put("table_name2", table_name2);//首字母大写 + item.put("orderBy", orderBy); + item.put("primaryKeyName", primaryKeyName.toString()); + cgHelper.generator("mapper2", table_name2 + "Mapper.xml", item); }); } } diff --git a/code-generator/src/main/java/com/qmrz/generator/Service2Generator.java b/code-generator/src/main/java/com/qmrz/generator/Service2Generator.java new file mode 100644 index 0000000..991e067 --- /dev/null +++ b/code-generator/src/main/java/com/qmrz/generator/Service2Generator.java @@ -0,0 +1,47 @@ +package com.qmrz.generator; + +import com.qmrz.service.TableService; +import com.qmrz.utils.CGHelper; +import com.qmrz.utils.Fn; +import com.qmrz.utils.SpringContextUtil; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * Service生成 + */ +public class Service2Generator { + private TableService tableService; + private String dbName; + + public Service2Generator(String dbName) { + tableService = SpringContextUtil.getBean(TableService.class); + this.dbName = dbName; + } + + public void generator() { + + List tableList = tableService.getTableList(dbName); + List columnList = tableService.getColumnList(dbName); + + Map result = columnList.stream().collect(Collectors.groupingBy(map -> map.get("table_name"), Collectors.toList())); + + CGHelper cgHelper = new CGHelper("service2.ftl", dbName); + + tableList.forEach(item -> { + String table_name = item.get("table_name").toString(); + String table_name2 = Fn.firstUpperCase(table_name); + + //去下划线且每个单词首字母大写 + table_name2 = Arrays.stream(table_name2.split("_")).map(Fn::firstUpperCase).collect(Collectors.joining()); + + item.put("columnList", result.get(table_name)); + item.put("dbname", dbName); + item.put("table_name2",table_name2);//首字母大写 + cgHelper.generator("service2", table_name2 + "Service.java", item); + }); + } +} diff --git a/code-generator/src/main/java/com/qmrz/generator/Service2ImplGenerator.java b/code-generator/src/main/java/com/qmrz/generator/Service2ImplGenerator.java new file mode 100644 index 0000000..bf1d199 --- /dev/null +++ b/code-generator/src/main/java/com/qmrz/generator/Service2ImplGenerator.java @@ -0,0 +1,47 @@ +package com.qmrz.generator; + +import com.qmrz.service.TableService; +import com.qmrz.utils.CGHelper; +import com.qmrz.utils.Fn; +import com.qmrz.utils.SpringContextUtil; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * ServiceImpl生成 + */ +public class Service2ImplGenerator { + private TableService tableService; + private String dbName; + + public Service2ImplGenerator(String dbName) { + tableService = SpringContextUtil.getBean(TableService.class); + this.dbName = dbName; + } + + public void generator() { + + List tableList = tableService.getTableList(dbName); + List columnList = tableService.getColumnList(dbName); + + Map result = columnList.stream().collect(Collectors.groupingBy(map -> map.get("table_name"), Collectors.toList())); + + CGHelper cgHelper = new CGHelper("service2Impl.ftl", dbName); + + tableList.forEach(item -> { + String table_name = item.get("table_name").toString(); + String table_name2 = Fn.firstUpperCase(table_name); + + //去下划线且每个单词首字母大写 + table_name2 = Arrays.stream(table_name2.split("_")).map(Fn::firstUpperCase).collect(Collectors.joining()); + + item.put("columnList", result.get(table_name)); + item.put("dbname", dbName); + item.put("table_name2",table_name2);//首字母大写 + cgHelper.generator("service2Impl", table_name2 + "ServiceImpl.java", item); + }); + } +} diff --git a/code-generator/src/main/resources/application.yml b/code-generator/src/main/resources/application.yml index 9dae747..463500b 100644 --- a/code-generator/src/main/resources/application.yml +++ b/code-generator/src/main/resources/application.yml @@ -12,9 +12,12 @@ spring: db: driver: com.mysql.cj.jdbc.Driver # url: jdbc:mysql://qmrz.cpowvfndzbei.rds.cn-northwest-1.amazonaws.com.cn:3306/qmrz?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC - url: jdbc:mysql://qmrz-ga.cpowvfndzbei.rds.cn-northwest-1.amazonaws.com.cn:3306/qmrzga-dev?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC +# url: jdbc:mysql://qmrz-ga.cpowvfndzbei.rds.cn-northwest-1.amazonaws.com.cn:3306/qmrzga-dev?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC +# username: qmrz +# password: Qmrz2018 + url: jdbc:mysql://qmrz.cpowvfndzbei.rds.cn-northwest-1.amazonaws.com.cn:3306/ga-users-dev?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC username: qmrz - password: Qmrz2018 + password: Qmrz2018.x logging: level: diff --git a/code-generator/src/main/resources/template/mapper2.ftl b/code-generator/src/main/resources/template/mapper2.ftl new file mode 100644 index 0000000..a0459ea --- /dev/null +++ b/code-generator/src/main/resources/template/mapper2.ftl @@ -0,0 +1,96 @@ + + + + + + + + + + + + + <#list columnList as item> + and t.${item.column_name} = ${"#"}{where_${item.column_name}} + + + <#list columnList as item> + and t.${item.column_name} like concat('%',${"#"}{like_${item.column_name}},'%') + + + + and t.${primaryKeyName} in + + ${"#"}{item} + + + + + + + + + + + + insert into ${table_name}( + + <#list columnList as item> + ${item.column_name}, + + ) + values( + + <#list columnList as item> + ${"#"}{${item.column_name}}, + + + ) + + + + + update ${table_name} t + + <#list columnList as item> + <#if item.column_key?? && item.column_key!="PRI" || item.column_name?? && item.column_name != "id"> + t.${item.column_name} = ${"#"}{${item.column_name}}, + + + + + + + + + + + delete t from ${table_name} t + + + + + \ No newline at end of file diff --git a/code-generator/src/main/resources/template/service.ftl b/code-generator/src/main/resources/template/service.ftl index bc97fac..dbb56cf 100644 --- a/code-generator/src/main/resources/template/service.ftl +++ b/code-generator/src/main/resources/template/service.ftl @@ -1,8 +1,5 @@ package com.qmrz.service; -import java.util.List; -import java.util.Map; - /** * ${table_name},${table_comment} * Automatic generation diff --git a/code-generator/src/main/resources/template/service2.ftl b/code-generator/src/main/resources/template/service2.ftl new file mode 100644 index 0000000..73cdd96 --- /dev/null +++ b/code-generator/src/main/resources/template/service2.ftl @@ -0,0 +1,10 @@ +package com.qmrz.service; + +import com.qmrz.interfaces.baseservice.IServiceV2; + +/** + * ${table_name},${table_comment} + */ +public interface ${table_name2}Service extends IServiceV2 { + +} \ No newline at end of file diff --git a/code-generator/src/main/resources/template/service2Impl.ftl b/code-generator/src/main/resources/template/service2Impl.ftl new file mode 100644 index 0000000..9eb8c11 --- /dev/null +++ b/code-generator/src/main/resources/template/service2Impl.ftl @@ -0,0 +1,17 @@ +package com.qmrz.service.impl; + +import com.qmrz.interfaces.baseservice.AbsServiceImplV2; +import com.qmrz.service.${table_name2}Service; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * ${table_name},${table_comment} + */ +@Slf4j +@Service +public class ${table_name2}ServiceImpl extends AbsServiceImplV2 implements ${table_name2}Service { + public ${table_name2}ServiceImpl(){ + super("${table_name}"); + } +} diff --git a/code-generator/src/main/resources/template/serviceImpl.ftl b/code-generator/src/main/resources/template/serviceImpl.ftl index 7046868..06aaacd 100644 --- a/code-generator/src/main/resources/template/serviceImpl.ftl +++ b/code-generator/src/main/resources/template/serviceImpl.ftl @@ -1,13 +1,9 @@ package com.qmrz.service.impl; import com.qmrz.service.${table_name2}Service; -import com.qmrz.utils.MapUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.util.List; -import java.util.Map; - /** * ${table_name},${table_comment} * Automatic generation diff --git a/code-generator/src/test/TestCodeGenerator.java b/code-generator/src/test/TestCodeGenerator.java index de38aea..cbc1b54 100644 --- a/code-generator/src/test/TestCodeGenerator.java +++ b/code-generator/src/test/TestCodeGenerator.java @@ -10,7 +10,9 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = CodeGenerator.class) public class TestCodeGenerator { - private String dbname="qmrzga-dev"; +// private String dbname="ga-dp-dev"; +private String dbname="psbd-dev"; +// private String dbname="ga-hotelmanage-dev"; /** * 生成所有 */ @@ -18,13 +20,14 @@ public class TestCodeGenerator { public void generatorAll() { readme(); mapper(); - service(); - serviceImpl(); +// service(); + service2(); +// serviceImpl(); + service2Impl(); controller(); interface2(); } - /** * readme 生成 */ @@ -60,6 +63,15 @@ public class TestCodeGenerator { generator.generator(); } + /** + * service 生成 + */ + @Test + public void service2() { + Service2Generator generator = new Service2Generator(dbname); + generator.generator(); + } + /** * serviceImpl 生成 */ @@ -69,6 +81,15 @@ public class TestCodeGenerator { generator.generator(); } + /** + * serviceImpl 生成 + */ + @Test + public void service2Impl() { + Service2ImplGenerator generator = new Service2ImplGenerator(dbname); + generator.generator(); + } + /** * controller 生成 */ diff --git a/pom.xml b/pom.xml index 60c28cd..97c9142 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ 代码生成器 common - service + code-generator