Переглянути джерело

完善代码生成

develop
陈国强 6 роки тому
джерело
коміт
8d92ee84b2
11 змінених файлів з 291 додано та 19 видалено
  1. +43
    -5
      code-generator/src/main/java/com/qmrz/generator/MapperGenerator.java
  2. +47
    -0
      code-generator/src/main/java/com/qmrz/generator/Service2Generator.java
  3. +47
    -0
      code-generator/src/main/java/com/qmrz/generator/Service2ImplGenerator.java
  4. +5
    -2
      code-generator/src/main/resources/application.yml
  5. +96
    -0
      code-generator/src/main/resources/template/mapper2.ftl
  6. +0
    -3
      code-generator/src/main/resources/template/service.ftl
  7. +10
    -0
      code-generator/src/main/resources/template/service2.ftl
  8. +17
    -0
      code-generator/src/main/resources/template/service2Impl.ftl
  9. +0
    -4
      code-generator/src/main/resources/template/serviceImpl.ftl
  10. +25
    -4
      code-generator/src/test/TestCodeGenerator.java
  11. +1
    -1
      pom.xml

+ 43
- 5
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<Map> tableList = tableService.getTableList(dbName);
List<Map> columnList = tableService.getColumnList(dbName);

Map result = columnList.stream().collect(Collectors.groupingBy(map -> map.get("table_name"), Collectors.toList()));
Map<String, List<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<Map> tmpColumnList = result.get(table_name);

List<String> 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);
});
}
}

+ 47
- 0
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<Map> tableList = tableService.getTableList(dbName);
List<Map> 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);
});
}
}

+ 47
- 0
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<Map> tableList = tableService.getTableList(dbName);
List<Map> 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);
});
}
}

+ 5
- 2
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:


+ 96
- 0
code-generator/src/main/resources/template/mapper2.ftl Переглянути файл

@@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--
${table_name}(${table_comment})
注意:分隔线以下 不增加业务,有新增自定义业务时加到分隔线上面
-->
<mapper namespace="com.qmrz.domain.mapper.${table_name2}Mapper">


<!-- ========================= 分隔线以下为生成的通用代码 ========================= -->
<!--
注意:
1、增加条件必须增加 _parameter.containsKey
2、修改字段手动更改此文件,不推荐重新生成后全部覆盖
-->

<!-- 通用查询条件 -->
<sql id="common_where">
<#list columnList as item>
<if test="_parameter.containsKey('where_${item.column_name}')">and t.${item.column_name} = ${"#"}{where_${item.column_name}}</if>
</#list>

<#list columnList as item>
<if test="_parameter.containsKey('like_${item.column_name}')">and t.${item.column_name} like concat('%',${"#"}{like_${item.column_name}},'%')</if>
</#list>

<if test="_parameter.containsKey('list_${primaryKeyName}')">
and t.${primaryKeyName} in
<foreach collection="list_${primaryKeyName}" item="item" open="(" separator="," close=")">
${"#"}{item}
</foreach>
</if>
</sql>
<!-- 通用查询记录 -->
<select id="selectList" resultType="java.util.LinkedHashMap">
select <#list columnList as item>t.${item.column_name}<#if item_has_next>,</#if></#list>
from ${table_name} t
<where>
<include refid="common_where" />
</where>
${orderBy}
<if test="_parameter.containsKey('__limit__')">
<#noparse>limit #{__limit__}</#noparse>
</if>
</select>

<!-- 通用查询记录总数 -->
<select id="selectCount" resultType="Integer">
select count(0) as cou from ${table_name} t
<where>
<include refid="common_where" />
</where>
</select>

<!-- 通用插入数据 -->
<insert id="insert">
insert into ${table_name}(
<trim suffixOverrides=",">
<#list columnList as item>
<if test="_parameter.containsKey('${item.column_name}')">${item.column_name},</if>
</#list>
</trim>)
values(
<trim suffixOverrides=",">
<#list columnList as item>
<if test="_parameter.containsKey('${item.column_name}')">${"#"}{${item.column_name}},</if>
</#list>
</trim>
)
</insert>

<!-- 通用更新数据 -->
<update id="update">
update ${table_name} t
<set>
<#list columnList as item>
<#if item.column_key?? && item.column_key!="PRI" || item.column_name?? && item.column_name != "id">
<if test="_parameter.containsKey('${item.column_name}')">t.${item.column_name} = ${"#"}{${item.column_name}},</if>
</#if>
</#list>
</set>
<where>
<include refid="common_where" />
</where>
</update>

<!-- 通用删除记录 -->
<delete id="delete">
delete t from ${table_name} t
<where>
<include refid="common_where" />
</where>
</delete>
</mapper>

+ 0
- 3
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


+ 10
- 0
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 {

}

+ 17
- 0
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}");
}
}

+ 0
- 4
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


+ 25
- 4
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 生成
*/


+ 1
- 1
pom.xml Переглянути файл

@@ -25,7 +25,7 @@
<description>代码生成器</description>
<modules>
<module>common</module>
<module>service</module>
<module>code-generator</module>
</modules>

<!--<properties>-->


Завантаження…
Відмінити
Зберегти