From 066bd947d917e53573449bca34f42b9c4548e767 Mon Sep 17 00:00:00 2001 From: suger <304902140@qq.com> Date: Wed, 22 May 2019 15:22:48 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E7=94=A8=E6=A8=A1=E5=9D=97=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qmrz/generator/MapperFPGenerator.java | 82 +++++ .../qmrz/generator/MapperFPRGenerator.java | 80 +++++ .../src/main/resources/template/mapper_fp.ftl | 96 ++++++ .../main/resources/template/mapper_fpr.ftl | 287 ++++++++++++++++++ 4 files changed, 545 insertions(+) create mode 100644 code-generator/src/main/java/com/qmrz/generator/MapperFPGenerator.java create mode 100644 code-generator/src/main/java/com/qmrz/generator/MapperFPRGenerator.java create mode 100644 code-generator/src/main/resources/template/mapper_fp.ftl create mode 100644 code-generator/src/main/resources/template/mapper_fpr.ftl diff --git a/code-generator/src/main/java/com/qmrz/generator/MapperFPGenerator.java b/code-generator/src/main/java/com/qmrz/generator/MapperFPGenerator.java new file mode 100644 index 0000000..6d1127b --- /dev/null +++ b/code-generator/src/main/java/com/qmrz/generator/MapperFPGenerator.java @@ -0,0 +1,82 @@ +package com.qmrz.generator; + +import com.qmrz.exception.ABException; +import com.qmrz.service.TableService; +import com.qmrz.utils.CGHelper; +import com.qmrz.utils.Fn; +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; + +/** + * Mapper生成 + */ +public class MapperGenerator { + private TableService tableService; + private String dbName; + + public MapperGenerator(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 -> Fn.toString(map.get("table_name")), Collectors.toList())); + + CGHelper cgHelper = new CGHelper("mapper2.ftl", dbName);//无同步代码版本 +// CGHelper cgHelper = new CGHelper("mapper_sync.ftl", dbName);//有同步代码版本 + + tableList.forEach(item -> { + String table_name = item.get("table_name").toString(); + String table_name2 = Fn.firstUpperCase(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 ("createtime".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);//首字母大写 + 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/MapperFPRGenerator.java b/code-generator/src/main/java/com/qmrz/generator/MapperFPRGenerator.java new file mode 100644 index 0000000..1d9cc24 --- /dev/null +++ b/code-generator/src/main/java/com/qmrz/generator/MapperFPRGenerator.java @@ -0,0 +1,80 @@ +package com.qmrz.generator; + +import com.qmrz.exception.ABException; +import com.qmrz.service.TableService; +import com.qmrz.utils.CGHelper; +import com.qmrz.utils.Fn; +import com.qmrz.utils.SpringContextUtil; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * Mapper生成 + */ +public class MapperFPGenerator { + private TableService tableService; + private String dbName; + + public MapperFPGenerator(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 -> Fn.toString(map.get("table_name")), Collectors.toList())); + + CGHelper cgHelper = new CGHelper("mapper_fp.ftl", dbName);//无同步代码版本 +// CGHelper cgHelper = new CGHelper("mapper_sync.ftl", dbName);//有同步代码版本 + + tableList.forEach(item -> { + String table_name = item.get("table_name").toString(); + String table_name2 = Fn.firstUpperCase(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 ("createtime".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);//首字母大写 + item.put("orderBy", orderBy); + item.put("primaryKeyName", primaryKeyName.toString()); + cgHelper.generator("mapper_fp", table_name2 + "Mapper.xml", item); + }); + } +} diff --git a/code-generator/src/main/resources/template/mapper_fp.ftl b/code-generator/src/main/resources/template/mapper_fp.ftl new file mode 100644 index 0000000..a0459ea --- /dev/null +++ b/code-generator/src/main/resources/template/mapper_fp.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/mapper_fpr.ftl b/code-generator/src/main/resources/template/mapper_fpr.ftl new file mode 100644 index 0000000..9d8706e --- /dev/null +++ b/code-generator/src/main/resources/template/mapper_fpr.ftl @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + <#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