Selaa lähdekoodia

Merge branch 'dev/ez-security210625' of http://192.168.2.236:10080/rengb/emrais into dev/ez-security210625

songxinlu 3 vuotta sitten
vanhempi
commit
9e0b3a2f6c
40 muutettua tiedostoa jossa 1448 lisäystä ja 145 poistoa
  1. 25 0
      common/pom.xml
  2. 0 26
      common/src/main/java/com/lantone/common/config/MybatisPlusConfig.java
  3. 13 0
      config-center/pom.xml
  4. 33 0
      dblayer-mbg/.gitignore
  5. 43 0
      dblayer-mbg/pom.xml
  6. 44 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/config/DruidConfig.java
  7. 48 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/config/typehandlers/CustomBlobTypeHandler.java
  8. 96 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/User.java
  9. 14 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/facade/UserFacade.java
  10. 19 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/UserMapper.java
  11. 13 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/UserService.java
  12. 17 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/impl/UserServiceImpl.java
  13. 65 0
      dblayer-mbg/src/main/resources/application.yml
  14. 39 0
      dblayer-mbg/src/main/resources/freemarker/baseMapper.xml.ftl
  15. 39 0
      dblayer-mbg/src/main/resources/freemarker/controller.java.ftl
  16. 155 0
      dblayer-mbg/src/main/resources/freemarker/entity.java.ftl
  17. 22 0
      dblayer-mbg/src/main/resources/freemarker/facade.java.ftl
  18. 20 0
      dblayer-mbg/src/main/resources/freemarker/mapper.java.ftl
  19. 39 0
      dblayer-mbg/src/main/resources/freemarker/mapper.xml.ftl
  20. 20 0
      dblayer-mbg/src/main/resources/freemarker/mapperParent.java.ftl
  21. 19 0
      dblayer-mbg/src/main/resources/freemarker/service.java.ftl
  22. 25 0
      dblayer-mbg/src/main/resources/freemarker/serviceImpl.java.ftl
  23. 10 0
      dblayer-mbg/src/main/resources/mapper/UserMapper.xml
  24. 21 0
      dblayer-mbg/src/main/resources/mapper/base/BaseUserMapper.xml
  25. 35 0
      dblayer-mbg/src/test/java/com/lantone/dblayermbg/CodeAutoGenerator.java
  26. 468 0
      dblayer-mbg/src/test/java/com/lantone/dblayermbg/GeneratorUtil.java
  27. 13 0
      gateway-service/pom.xml
  28. 13 0
      monitor-service/pom.xml
  29. 33 6
      pom.xml
  30. 13 0
      register-center/pom.xml
  31. 3 1
      register-center/src/main/resources/bootstrap.yml
  32. 3 3
      security-center/src/main/resources/freemarker/baseMapper.xml.ftl
  33. 11 7
      security-center/src/main/resources/freemarker/entity.java.ftl
  34. 1 0
      security-center/src/main/resources/freemarker/facade.java.ftl
  35. 1 1
      security-center/src/main/resources/freemarker/mapper.java.ftl
  36. 1 1
      security-center/src/main/resources/freemarker/service.java.ftl
  37. 1 1
      security-center/src/main/resources/freemarker/serviceImpl.java.ftl
  38. 0 83
      security-center/src/test/java/com/diagbot/CodeGeneration.java
  39. 0 16
      security-center/src/test/java/com/diagbot/MrqcSysApplicationTests.java
  40. 13 0
      structure-center/pom.xml

+ 25 - 0
common/pom.xml

@@ -21,6 +21,7 @@
         <commons-codec.version>1.11</commons-codec.version>
         <poi.version>4.0.1</poi.version>
         <commons-beanutils.version>1.9.3</commons-beanutils.version>
+        <docker-maven-plugin.version>1.2.2</docker-maven-plugin.version>
     </properties>
 
     <dependencies>
@@ -85,4 +86,28 @@
 
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+                <version>${docker-maven-plugin.version}</version>
+                <configuration>
+                    <imageName>emrais/${project.artifactId}:${project.version}</imageName>
+                    <baseImage>java:8</baseImage>
+                    <forceTags>true</forceTags>
+                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar $BOOT_OPTIONS"]
+                    </entryPoint>
+                    <resources>
+                        <resource>
+                            <targetPath>/</targetPath>
+                            <directory>${project.build.directory}</directory>
+                            <include>${project.build.finalName}.jar</include>
+                        </resource>
+                    </resources>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>

+ 0 - 26
common/src/main/java/com/lantone/common/config/MybatisPlusConfig.java

@@ -1,26 +0,0 @@
-package com.lantone.common.config;
-
-import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @Description:
- * @author: rengb
- * @time: 2019/11/6 15:50
- */
-@Configuration
-public class MybatisPlusConfig {
-
-    @Bean
-    public PaginationInterceptor paginationInterceptor() {
-        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
-        // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
-        paginationInterceptor.setOverflow(true);
-        // 设置最大单页限制数量,默认 500 条,-1 不受限制
-        paginationInterceptor.setLimit(-1);
-        return paginationInterceptor;
-    }
-
-
-}

+ 13 - 0
config-center/pom.xml

@@ -25,4 +25,17 @@
 
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>

+ 33 - 0
dblayer-mbg/.gitignore

@@ -0,0 +1,33 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/

+ 43 - 0
dblayer-mbg/pom.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         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.lantone</groupId>
+        <artifactId>emrais</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>dblayer-mbg</artifactId>
+    <name>dblayer-mbg</name>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 44 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/config/DruidConfig.java

@@ -0,0 +1,44 @@
+package com.lantone.dblayermbg.config;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import javax.sql.DataSource;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2020/4/8 21:41
+ */
+@EnableTransactionManagement
+@Configuration
+@MapperScan(basePackages = "com.lantone.dblayermbg.mapper")
+public class DruidConfig {
+
+    /**
+     * mybatis-plus分页插件<br>
+     * 文档:http://mp.baomidou.com<br>
+     */
+    @Bean
+    public PaginationInterceptor paginationInterceptor() {
+        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
+        // 设置请求的页面大于最大页后操作,true调回到首页,false继续请求,默认false
+        //paginationInterceptor.setOverflow(false);
+        // 设置最大单页限制数量,默认500条,-1不受限制
+        paginationInterceptor.setLimit(-1L);
+        return paginationInterceptor;
+    }
+
+}

+ 48 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/config/typehandlers/CustomBlobTypeHandler.java

@@ -0,0 +1,48 @@
+package com.lantone.dblayermbg.config.typehandlers;
+
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedTypes;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.sql.Blob;
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+@MappedTypes(Blob.class)
+public class CustomBlobTypeHandler extends BaseTypeHandler<Blob> {
+
+    @Override
+    public void setNonNullParameter(PreparedStatement ps, int i,
+                                    Blob parameter, JdbcType jdbcType) throws SQLException {
+        InputStream is;
+        is = parameter.getBinaryStream();
+        try {
+            ps.setBinaryStream(i, is, is.available());
+        } catch (IOException e) {
+            throw new SQLException(e);
+        }
+    }
+
+    @Override
+    public Blob getNullableResult(ResultSet rs, String columnName)
+            throws SQLException {
+        return rs.getBlob(columnName);
+    }
+
+    @Override
+    public Blob getNullableResult(ResultSet rs, int columnIndex)
+            throws SQLException {
+        return rs.getBlob(columnIndex);
+    }
+
+    @Override
+    public Blob getNullableResult(CallableStatement cs, int columnIndex)
+            throws SQLException {
+        return cs.getBlob(columnIndex);
+    }
+
+}

+ 96 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/User.java

@@ -0,0 +1,96 @@
+package com.lantone.dblayermbg.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 系统用户表
+ * </p>
+ */
+@Data
+@TableName("sys_user")
+public class User implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 用户ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    @TableField("is_deleted")
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    @TableField("gmt_modified")
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    @TableField("creator")
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    @TableField("modifier")
+    private String modifier;
+
+    /**
+     * 用户名
+     */
+    @TableField("username")
+    private String username;
+
+    /**
+     * 用户密码
+     */
+    @TableField("password")
+    private String password;
+
+    /**
+     * 联系人
+     */
+    @TableField("linkman")
+    private String linkman;
+
+    /**
+     * 是否启用(0:停用,1:启用)
+     */
+    @TableField("status")
+    private Integer status;
+
+    /**
+     * 1内部用户,0外部用户(默认0)
+     */
+    @TableField("type")
+    private Integer type;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+
+}

+ 14 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/facade/UserFacade.java

@@ -0,0 +1,14 @@
+package com.lantone.dblayermbg.facade;
+
+import com.lantone.dblayermbg.service.impl.UserServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * <p>
+ * 系统用户表 服务实现类Facade
+ * </p>
+ */
+@Component
+public class UserFacade extends UserServiceImpl {
+
+}

+ 19 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/UserMapper.java

@@ -0,0 +1,19 @@
+package com.lantone.dblayermbg.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lantone.dblayermbg.entity.User;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 系统用户表 Mapper 接口
+ * </p>
+ */
+public interface UserMapper extends BaseMapper<User> {
+
+
+    List<User> getalle();
+
+}
+

+ 13 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/UserService.java

@@ -0,0 +1,13 @@
+package com.lantone.dblayermbg.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.lantone.dblayermbg.entity.User;
+
+/**
+ * <p>
+ * 系统用户表 服务类
+ * </p>
+ */
+public interface UserService extends IService<User> {
+
+}

+ 17 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/service/impl/UserServiceImpl.java

@@ -0,0 +1,17 @@
+package com.lantone.dblayermbg.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.lantone.dblayermbg.entity.User;
+import com.lantone.dblayermbg.mapper.UserMapper;
+import com.lantone.dblayermbg.service.UserService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 系统用户表 服务实现类
+ * </p>
+ */
+@Service
+public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
+
+}

+ 65 - 0
dblayer-mbg/src/main/resources/application.yml

@@ -0,0 +1,65 @@
+spring:
+  datasource:
+    druid:
+      driver-class-name: com.mysql.cj.jdbc.Driver
+      platform: mysql
+      url: jdbc:mysql://192.168.2.236:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      username: root
+      password: lantone
+      # 连接池的配置信息
+      # 初始化大小,最小,最大
+      initialSize: 5
+      minIdle: 5
+      maxActive: 20
+      # 配置获取连接等待超时的时间
+      maxWait: 60000
+      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+      timeBetweenEvictionRunsMillis: 60000
+      # 配置一个连接在池中最小生存的时间,单位是毫秒
+      minEvictableIdleTimeMillis: 300000
+      validationQuery: SELECT 1 FROM DUAL
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      # 打开PSCache,并且指定每个连接上PSCache的大小
+      poolPreparedStatements: true
+      maxPoolPreparedStatementPerConnectionSize: 20
+      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+      filters.commons-log.connection-logger-name: wall,log4j
+      filter:
+        stat:
+          enabled: true
+          mergeSql: true
+          log-slow-sql: true
+          slow-sql-millis: 2000
+      #监控配置
+      web-stat-filter:
+        enabled: true
+        url-pattern: /*
+        exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'
+      # StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
+      stat-view-servlet:
+        enabled: true
+        url-pattern: /druid/*
+        reset-enable: false
+        login-username: root
+        login-password: root
+
+  jackson:
+    date-format: yyyy-MM-dd HH:mm:ss
+    time-zone: GMT+8
+    serialization:
+      write-dates-as-timestamps: false
+
+mybatis-plus:
+  mapper-locations: classpath*:/mapper/**/*Mapper.xml
+  type-aliases-package: com.lantone.dblayermbg.entity
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    map-underscore-to-camel-case: true
+    auto-mapping-behavior: partial
+  global-config:
+    db-config:
+      logic-delete-value: 0
+      logic-not-delete-value: 1
+      id-type: id_worker

+ 39 - 0
dblayer-mbg/src/main/resources/freemarker/baseMapper.xml.ftl

@@ -0,0 +1,39 @@
+<?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">
+<mapper namespace="${package.Mapper}.${table.mapperName}">
+
+<#if enableCache>
+    <!-- 开启二级缓存 -->
+    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
+
+</#if>
+<#if baseResultMap>
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="${package.Entity}.${entity}">
+<#list table.fields as field>
+<#if field.keyFlag><#--生成主键排在第一位-->
+        <id column="${field.name}" property="${field.propertyName}"/>
+</#if>
+</#list>
+<#list table.commonFields as field><#--生成公共字段 -->
+    <result column="${field.name}" property="${field.propertyName}"/>
+</#list>
+<#list table.fields as field>
+<#if !field.keyFlag><#--生成普通字段 -->
+        <result column="${field.name}" property="${field.propertyName}"/>
+</#if>
+</#list>
+    </resultMap>
+
+</#if>
+<#if baseColumnList>
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+<#list table.commonFields as field>
+        ${field.name},
+</#list>
+        ${table.fieldNames}
+    </sql>
+
+</#if>
+</mapper>

+ 39 - 0
dblayer-mbg/src/main/resources/freemarker/controller.java.ftl

@@ -0,0 +1,39 @@
+package ${package.Controller};
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+<#if restControllerStyle>
+import org.springframework.web.bind.annotation.RestController;
+<#else>
+import org.springframework.stereotype.Controller;
+</#if>
+<#if superControllerClassPackage??>
+import ${superControllerClassPackage};
+</#if>
+
+/**
+ * <p>
+ * ${table.comment!} 前端控制器
+ * </p>
+ *
+ <#--* @author ${author}-->
+ <#--* @since ${date}-->
+ */
+<#if restControllerStyle>
+@RestController
+<#else>
+@Controller
+</#if>
+@RequestMapping("<#if package.ModuleName??>/${package.ModuleName}</#if>/<#if controllerMappingHyphenStyle??>${controllerMappingHyphen}<#else>${table.entityPath}</#if>")
+<#if kotlin>
+class ${table.controllerName}<#if superControllerClass??> : ${superControllerClass}()</#if>
+<#else>
+<#if superControllerClass??>
+public class ${table.controllerName} extends ${superControllerClass} {
+<#else>
+public class ${table.controllerName} {
+</#if>
+
+}
+</#if>

+ 155 - 0
dblayer-mbg/src/main/resources/freemarker/entity.java.ftl

@@ -0,0 +1,155 @@
+package ${package.Entity};
+
+<#list (table.importPackages)?sort as pkg>
+<#if !pkg?contains('java.')>
+import ${pkg};
+</#if>
+</#list>
+<#if entityLombokModel>
+import lombok.Data;
+<#--import lombok.EqualsAndHashCode;-->
+<#--import lombok.experimental.Accessors;-->
+</#if>
+
+<#list (table.importPackages)?sort as pkg>
+<#if pkg?contains('java.')>
+import ${pkg};
+</#if>
+</#list>
+
+/**
+ * <p>
+ * ${table.comment!}
+ * </p>
+ <#--* @author ${author}-->
+ <#--* @since ${date}-->
+ */
+<#if entityLombokModel>
+@Data
+    <#--<#if superEntityClass??>-->
+<#--@EqualsAndHashCode(callSuper = true)-->
+    <#--<#else>-->
+<#--@EqualsAndHashCode(callSuper = false)-->
+    <#--</#if>-->
+<#--@Accessors(chain = true)-->
+</#if>
+<#if table.convert>
+@TableName("${table.name}")
+</#if>
+<#if swagger2>
+@ApiModel(value="${entity}对象", description="${table.comment!}")
+</#if>
+<#if superEntityClass??>
+public class ${entity} extends ${superEntityClass}<#if activeRecord><${entity}></#if> {
+<#elseif activeRecord>
+public class ${entity} extends Model<${entity}> {
+<#else>
+public class ${entity} implements Serializable {
+</#if>
+
+<#if entitySerialVersionUID>
+    private static final long serialVersionUID = 1L;
+</#if>
+<#-- ----------  BEGIN 字段循环遍历  ---------->
+<#list table.fields as field>
+    <#if field.keyFlag>
+        <#assign keyPropertyName="${field.propertyName}"/>
+    </#if>
+
+    <#if field.comment!?length gt 0>
+        <#if swagger2>
+    @ApiModelProperty(value = "${field.comment}")
+        <#else>
+    /**
+     * ${field.comment}
+     */
+        </#if>
+    </#if>
+    <#if field.keyFlag>
+        <#-- 主键 -->
+        <#if field.keyIdentityFlag>
+    @TableId(value = "${field.name}", type = IdType.AUTO)
+        <#elseif idType??>
+    @TableId(value = "${field.name}", type = IdType.${idType})
+        <#elseif field.convert>
+    @TableId("${field.name}")
+        </#if>
+        <#-- 普通字段 -->
+    <#elseif field.fill??>
+    <#-- -----   存在字段填充设置   ----->
+        <#if field.convert>
+    @TableField(value = "${field.name}", fill = FieldFill.${field.fill})
+        <#else>
+    @TableField(fill = FieldFill.${field.fill})
+        </#if>
+    <#elseif field.convert>
+    @TableField("${field.name}")
+    </#if>
+    <#-- 乐观锁注解 -->
+    <#if (versionFieldName!"") == field.name>
+    @Version
+    </#if>
+    <#-- 逻辑删除注解 -->
+    <#if (logicDeleteFieldName!"") == field.name>
+    @TableLogic
+    </#if>
+    private ${field.propertyType} ${field.propertyName};
+</#list>
+<#------------  END 字段循环遍历  ---------->
+
+<#if !entityLombokModel>
+    <#list table.fields as field>
+        <#if field.propertyType == "boolean">
+            <#assign getprefix="is"/>
+        <#else>
+            <#assign getprefix="get"/>
+        </#if>
+    public ${field.propertyType} ${getprefix}${field.capitalName}() {
+        return ${field.propertyName};
+    }
+
+    <#if entityBuilderModel>
+    public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
+    <#else>
+    public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
+    </#if>
+        this.${field.propertyName} = ${field.propertyName};
+        <#if entityBuilderModel>
+        return this;
+        </#if>
+    }
+    </#list>
+</#if>
+
+<#if entityColumnConstant>
+    <#list table.fields as field>
+    public static final String ${field.name?upper_case} = "${field.name}";
+
+    </#list>
+</#if>
+<#if activeRecord>
+    @Override
+    protected Serializable pkVal() {
+    <#if keyPropertyName??>
+        return this.${keyPropertyName};
+    <#else>
+        return null;
+    </#if>
+    }
+
+</#if>
+<#if !entityLombokModel>
+    @Override
+    public String toString() {
+        return "${entity}{" +
+    <#list table.fields as field>
+        <#if field_index==0>
+            "${field.propertyName}=" + ${field.propertyName} +
+        <#else>
+            ", ${field.propertyName}=" + ${field.propertyName} +
+        </#if>
+    </#list>
+        "}";
+    }
+</#if>
+}

+ 22 - 0
dblayer-mbg/src/main/resources/freemarker/facade.java.ftl

@@ -0,0 +1,22 @@
+package ${package.Controller};
+
+import ${package.ServiceImpl}.${table.serviceImplName};
+import org.springframework.stereotype.Component;
+
+/**
+ * <p>
+ * ${table.comment!} 服务实现类Facade
+ * </p>
+ <#--* @author ${author}-->
+ <#--* @since ${date}-->
+ */
+@Component
+<#if kotlin>
+open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} {
+
+}
+<#else>
+public class ${entity}Facade extends ${table.serviceImplName} {
+
+}
+</#if>

+ 20 - 0
dblayer-mbg/src/main/resources/freemarker/mapper.java.ftl

@@ -0,0 +1,20 @@
+package ${package.Mapper};
+
+import ${superMapperClassPackage};
+import ${package.Entity}.${entity};
+
+/**
+ * <p>
+ * ${table.comment!} Mapper 接口
+ * </p>
+<#--* @author ${author}-->
+<#--* @since ${date}-->
+ */
+<#if kotlin>
+interface ${table.mapperName} : ${superMapperClass}<${entity}>
+<#else>
+public interface ${table.mapperName} extends ${superMapperClass}<${entity}> {
+
+}
+</#if>
+

+ 39 - 0
dblayer-mbg/src/main/resources/freemarker/mapper.xml.ftl

@@ -0,0 +1,39 @@
+<?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">
+<mapper namespace="${package.Mapper}.${table.mapperName}">
+
+<#if enableCache>
+    <!-- 开启二级缓存 -->
+    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
+
+</#if>
+<#--<#if baseResultMap>-->
+    <#--<!-- 通用查询映射结果 &ndash;&gt;-->
+    <#--<resultMap id="BaseResultMap" type="${package.Entity}.${entity}">-->
+<#--<#list table.fields as field>-->
+<#--<#if field.keyFlag>&lt;#&ndash;生成主键排在第一位&ndash;&gt;-->
+        <#--<id column="${field.name}" property="${field.propertyName}" />-->
+<#--</#if>-->
+<#--</#list>-->
+<#--<#list table.commonFields as field>&lt;#&ndash;生成公共字段 &ndash;&gt;-->
+    <#--<result column="${field.name}" property="${field.propertyName}" />-->
+<#--</#list>-->
+<#--<#list table.fields as field>-->
+<#--<#if !field.keyFlag>&lt;#&ndash;生成普通字段 &ndash;&gt;-->
+        <#--<result column="${field.name}" property="${field.propertyName}" />-->
+<#--</#if>-->
+<#--</#list>-->
+    <#--</resultMap>-->
+
+<#--</#if>-->
+<#if baseColumnList>
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+<#list table.commonFields as field>
+        ${field.name},
+</#list>
+        ${table.fieldNames}
+    </sql>
+
+</#if>
+</mapper>

+ 20 - 0
dblayer-mbg/src/main/resources/freemarker/mapperParent.java.ftl

@@ -0,0 +1,20 @@
+package ${package.Mapper}.parent;
+
+import ${package.Entity}.${entity};
+import ${superMapperClassPackage};
+
+/**
+ * <p>
+    * ${table.comment!} MapperParent 接口
+    * </p>
+ *
+ * @author ${author}
+<#--* @since ${date}-->
+ */
+<#if kotlin>
+interface ${table.mapperName} : ${superMapperClass}<${entity}>
+<#else>
+public interface ${table.mapperName}Parent extends ${superMapperClass}<${entity}> {
+
+}
+</#if>

+ 19 - 0
dblayer-mbg/src/main/resources/freemarker/service.java.ftl

@@ -0,0 +1,19 @@
+package ${package.Service};
+
+import ${superServiceClassPackage};
+import ${package.Entity}.${entity};
+
+/**
+ * <p>
+ * ${table.comment!} 服务类
+ * </p>
+ <#--* @author ${author}-->
+ <#--* @since ${date}-->
+ */
+<#if kotlin>
+interface ${table.serviceName} : ${superServiceClass}<${entity}>
+<#else>
+public interface ${table.serviceName} extends ${superServiceClass}<${entity}> {
+
+}
+</#if>

+ 25 - 0
dblayer-mbg/src/main/resources/freemarker/serviceImpl.java.ftl

@@ -0,0 +1,25 @@
+package ${package.ServiceImpl};
+
+import ${superServiceImplClassPackage};
+import ${package.Entity}.${entity};
+import ${package.Mapper}.${table.mapperName};
+import ${package.Service}.${table.serviceName};
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * ${table.comment!} 服务实现类
+ * </p>
+ <#--* @author ${author}-->
+ <#--* @since ${date}-->
+ */
+@Service
+<#if kotlin>
+open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} {
+
+}
+<#else>
+public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} {
+
+}
+</#if>

+ 10 - 0
dblayer-mbg/src/main/resources/mapper/UserMapper.xml

@@ -0,0 +1,10 @@
+<?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">
+<mapper namespace="com.lantone.dblayermbg.mapper.UserMapper">
+
+    <select id="getalle" resultType="com.lantone.dblayermbg.entity.User">
+
+        select * from sys_user
+    </select>
+
+</mapper>

+ 21 - 0
dblayer-mbg/src/main/resources/mapper/base/BaseUserMapper.xml

@@ -0,0 +1,21 @@
+<?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">
+<mapper namespace="com.lantone.dblayermbg.mapper.UserMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.lantone.dblayermbg.entity.User">
+        <id column="id" property="id"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="gmt_create" property="gmtCreate"/>
+        <result column="gmt_modified" property="gmtModified"/>
+        <result column="creator" property="creator"/>
+        <result column="modifier" property="modifier"/>
+        <result column="username" property="username"/>
+        <result column="password" property="password"/>
+        <result column="linkman" property="linkman"/>
+        <result column="status" property="status"/>
+        <result column="type" property="type"/>
+        <result column="remark" property="remark"/>
+    </resultMap>
+
+</mapper>

+ 35 - 0
dblayer-mbg/src/test/java/com/lantone/dblayermbg/CodeAutoGenerator.java

@@ -0,0 +1,35 @@
+package com.lantone.dblayermbg;
+
+/**
+ * @ClassName: CodeAutoGenerator
+ * @Description:
+ * @Author songxl
+ * @Date 2021/6/28
+ * @Version 1.0
+ */
+public class CodeAutoGenerator {
+
+    /**
+     * 数据库
+     */
+    private static String username = "root";
+    private static String password = "lantone";
+    private static String url = "jdbc:mysql://192.168.2.236:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8";
+
+    /**
+     * 表名
+     */
+    private static String[] TABLES = {
+            "med_check_info"
+    };
+    /**
+     * 生成的实体类忽略表前缀: 不需要则置空
+     */
+    private static String[] ENTITY_IGNORE_PREFIX = { "med_" };
+
+    public static void main(String[] args) {
+        GeneratorUtil.create(username, password, url, TABLES, ENTITY_IGNORE_PREFIX);
+    }
+
+
+}

+ 468 - 0
dblayer-mbg/src/test/java/com/lantone/dblayermbg/GeneratorUtil.java

@@ -0,0 +1,468 @@
+package com.lantone.dblayermbg;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+import com.baomidou.mybatisplus.generator.config.FileOutConfig;
+import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+import com.baomidou.mybatisplus.generator.config.IFileCreate;
+import com.baomidou.mybatisplus.generator.config.PackageConfig;
+import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+import com.baomidou.mybatisplus.generator.config.TemplateConfig;
+import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
+import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
+import com.baomidou.mybatisplus.generator.config.po.TableInfo;
+import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
+import com.baomidou.mybatisplus.generator.config.rules.FileType;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @ClassName: GeneratorUtil
+ * @Description:
+ * @Author songxl
+ * @Date 2021/7/5
+ * @Version 1.0
+ */
+public class GeneratorUtil {
+    /**
+     * 作者
+     */
+    private static String AUTHOR = "songxl";
+    private static DbType DB_TYPE = DbType.MYSQL;
+    private static String driverClassName = "com.mysql.cj.jdbc.Driver";
+
+    //生成文件根目录
+    private static String projectPath = "D://code";
+    //是否将根目录更新为工程的根目录【true会覆盖该项目对应目录下的文件、慎用】
+    private static boolean updatePath = true;
+    //模块名称
+    private static String moduleName = "dblayer-mbg";
+
+    // 文件生成开关
+
+    //facade生成开关
+    private static boolean facadeFlag = true;
+    //service生成开关
+    private static boolean serviceFlag = true;
+    //serviceImpl生成开关
+    private static boolean serviceImplFlag = true;
+    //mapper.java
+    private static boolean mapperJFlag = true;
+    //mapperParent.java(数据业务数据库CRUD接口)生成开关
+    private static boolean mapperParentJFlag = false;
+    //mapper.xml (实体类bean与数据库表字段映射)生成开关
+    private static boolean baseMapperXFlag = true;
+    //mapper.xml(数据库CRUD sql)生成开关
+    private static boolean mapperXFlag = true;
+    //entity(表实体类)生成开关
+    private static boolean entityFlag = true;
+
+    /**
+     * 父包名路径(文件输出路径,也是导包的路径)
+     */
+    private static String PARENT_PACKAGE_PATH = "/com/lantone/dblayermbg";
+    /**
+     * 生成文件父类包package
+     */
+    private static String packageName = "com.lantone.dblayermbg";
+
+
+    // 各层包名
+    private static String ENTITY_PATH = "/entity/";
+    private static String FACADE_PATH = "/facade/";
+    private static String MAPPER_PATH = "/mapper/";
+    private static String XML_PATH = "/resources/mapper/";
+    private static String SERVICE_PATH = "/service/";
+    private static String SERVICE_IMPL_PATH = "/service/impl/";
+    private static String CONTROLLER_PATH = "/web/";
+
+
+    // 自定义输出模板和位置
+    /**
+     * entity输出模板
+     */
+    private static String ENTITY_TEMPLATE = "freemarker/entity.java.ftl";
+    private static String ENTITY_OUTPUT_PATH = "/src/main/java" + PARENT_PACKAGE_PATH + ENTITY_PATH;
+    /**
+     * facade输出模板
+     */
+    private static String FACADE_TEMPLATE = "freemarker/facade.java.ftl";
+    private static String FACADE_OUTPUT_PATH = "/src/main/java" + PARENT_PACKAGE_PATH + FACADE_PATH;
+    /**
+     * mapper.xml输出模板
+     */
+    private static String XML_TEMPLATE = "freemarker/baseMapper.xml.ftl";
+    private static String XML_OUTPUT_PATH = "/src/main" + XML_PATH + "/base/";
+    /**
+     * mapperExt.xml输出模板
+     */
+    private static String XMLEXT_TEMPLATE = "freemarker/mapper.xml.ftl";
+    private static String XMLEXT_OUTPUT_PATH = "/src/main" + XML_PATH;
+    /**
+     * mapper.java输出模板
+     */
+    private static String MAPPER_TEMPLATE = "freemarker/mapper.java.ftl";
+    private static String MAPPER_OUTPUT_PATH = "/src/main/java" + PARENT_PACKAGE_PATH + MAPPER_PATH;
+
+    /**
+     * mapperParent.java输出模板
+     */
+    private static String BASEMAPPER_TEMPLATE = "freemarker/mapperParent.java.ftl";
+    private static String BASEMAPPER_OUTPUT_PATH = "/src/main/java" + PARENT_PACKAGE_PATH + MAPPER_PATH + "/parent/";
+
+    /**
+     * service输出模板
+     */
+    private static String SERVICE_TEMPLATE = "freemarker/service.java.ftl";
+    private static String SERVICE_OUTPUT_PATH = "/src/main/java" + PARENT_PACKAGE_PATH + SERVICE_PATH;
+    /**
+     * serviceImpl输出模板
+     */
+    private static String SERVICE_IMPL_TEMPLATE = "freemarker/serviceImpl.java.ftl";
+    private static String SERVICE_IMPL_OUTPUT_PATH = "/src/main/java" + PARENT_PACKAGE_PATH + SERVICE_IMPL_PATH;
+    /**
+     * controller输出模板
+     */
+    private static String CONTROLLER_TEMPLATE = "freemarker/controller.java.ftl";
+    private static String CONTROLLER_OUTPUT_PATH = "/src/main/java" + PARENT_PACKAGE_PATH + CONTROLLER_PATH;
+
+
+    /**
+     * 全局配置
+     */
+    private static GlobalConfig globalConfig() {
+        return new GlobalConfig()
+                // 打开文件
+                .setOpen(false)
+                //                .setOutputDir("D://code")
+                // 文件覆盖
+                .setFileOverride(true)
+                // 开启activeRecord模式
+                .setActiveRecord(false)
+                // XML 二级缓存
+                .setEnableCache(false)
+                // XML ResultMap: mapper.xml生成查询映射结果
+                .setBaseResultMap(true)
+                // XML ColumnList: mapper.xml生成查询结果列
+                .setBaseColumnList(false)
+                // swagger注解; 须添加swagger依赖
+                //                .setSwagger2(true)
+                // 作者
+                //                .setAuthor(AUTHOR)
+                // 设置实体类名称
+                .setControllerName("%sController")
+                .setServiceName("%sService")
+                .setServiceImplName("%sServiceImpl")
+                .setMapperName("%sMapper")
+                .setXmlName("%sMapper");
+    }
+
+    /**
+     * 数据源配置
+     */
+    private static DataSourceConfig dataSourceConfig(String url, String username, String password) {
+        return new DataSourceConfig()
+                // 数据库类型
+                .setDbType(DB_TYPE)
+                // 连接驱动
+                .setDriverName(driverClassName)
+                // 地址
+                .setUrl(url)
+                // 用户名
+                .setUsername(username)
+                // 密码
+                .setPassword(password)
+                // 自定义数据库表字段类型转换【可选】
+                .setTypeConvert(new MySqlTypeConvert() {
+                    @Override
+                    public DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
+                        //将数据库中datetime转换成date
+                        if (fieldType.toLowerCase().contains("datetime")) {
+                            return DbColumnType.DATE;
+                        }
+                        return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);
+                    }
+                });
+    }
+
+    /**
+     * 策略配置
+     */
+    private static StrategyConfig strategyConfig(String[] TABLES, String[] ENTITY_IGNORE_PREFIX) {
+        return new StrategyConfig()
+                // 表名生成策略:下划线连转驼峰
+                .setNaming(NamingStrategy.underline_to_camel)
+                // 表字段生成策略:下划线连转驼峰
+                .setColumnNaming(NamingStrategy.underline_to_camel)
+                // 需要生成的表
+                .setInclude(TABLES)
+                // 生成controller
+                .setRestControllerStyle(true)
+                // 去除表前缀
+                .setTablePrefix(ENTITY_IGNORE_PREFIX)
+                // controller映射地址:驼峰转连字符
+                .setControllerMappingHyphenStyle(true)
+                // 是否启用builder 模式
+                .setEntityBuilderModel(true)
+                // 是否为lombok模型; 需要lombok依赖
+                .setEntityLombokModel(true)
+                // 生成实体类字段注解
+                .setEntityTableFieldAnnotationEnable(true)
+                //自定义父类
+                .setSuperServiceImplClass(null)
+                .setSuperMapperClass(null);
+    }
+
+    /**
+     * 包配置
+     * 设置包路径用于导包时使用,路径示例:com.path
+     */
+    private static PackageConfig packageConfig() {
+        return new PackageConfig()
+                // 父包名
+                .setParent(packageName)
+                .setEntity("entity")
+                .setMapper("mapper")
+                .setXml("resources.mapper")
+                .setService("service")
+                .setServiceImpl("service.impl")
+                .setController("facade");
+    }
+
+    /**
+     * 模板配置
+     */
+    private static TemplateConfig templateConfig() {
+        return new TemplateConfig()
+                // 置空后方便使用自定义输出位置
+                .setEntity(null)
+                .setXml(null)
+                .setMapper(null)
+                .setService(null)
+                .setServiceImpl(null)
+                .setController(null);
+    }
+
+    /**
+     * 自定义配置
+     */
+    private static InjectionConfig injectionConfig() {
+        return new InjectionConfig() {
+            @Override
+            public void initMap() {
+                // 注入配置
+            }
+        }
+                // 判断是否创建文件
+                .setFileCreate(new IFileCreate() {
+                    @Override
+                    public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
+
+                        // 检查文件目录,不存在自动递归创建
+                        checkDir(filePath);
+
+                        // 指定需要覆盖的文件
+                        // entity或mapper.xml覆盖
+                        if (isExists(filePath)) {
+                            if (filePath.contains("/entity")
+                                    || filePath.endsWith(".xml") && filePath.contains("/base")) {
+                                return true;
+                            }
+                            return false;
+                        }
+
+                        return true;
+                    }
+                })
+                // 自定义输出文件
+                .setFileOutConfigList(fileOutConfigList());
+    }
+
+    /**
+     * @Author songxl
+     * @Description 自定义输出文件配置
+     * @Date 2021/7/1
+     * @Param []
+     * @Return java.util.List<com.baomidou.mybatisplus.generator.config.FileOutConfig>
+     * @MethodName fileOutConfigList
+     */
+    private static List<FileOutConfig> fileOutConfigList() {
+
+        List<FileOutConfig> list = new ArrayList<>();
+        // 当前项目路径
+        if (updatePath) {
+            projectPath = System.getProperty("user.dir") + "\\" + moduleName;
+        }
+
+        // 实体类文件输出
+        if (entityFlag) {
+            list.add(new FileOutConfig(ENTITY_TEMPLATE) {
+                @Override
+                public String outputFile(TableInfo tableInfo) {
+                    makeDir(projectPath + ENTITY_OUTPUT_PATH);
+                    return projectPath + ENTITY_OUTPUT_PATH + tableInfo.getEntityName() + StringPool.DOT_JAVA;
+                }
+            });
+        }
+        // facade文件输出 不会覆盖
+        if (facadeFlag) {
+            list.add(new FileOutConfig(FACADE_TEMPLATE) {
+                @Override
+                public String outputFile(TableInfo tableInfo) {
+                    makeDir(projectPath + FACADE_OUTPUT_PATH);
+                    return projectPath + FACADE_OUTPUT_PATH + tableInfo.getServiceName().replaceAll("Service", "") + "Facade" + StringPool.DOT_JAVA;
+                }
+            });
+        }
+
+        // mapper xml文件输出
+        if (baseMapperXFlag) {
+            list.add(new FileOutConfig(XML_TEMPLATE) {
+                @Override
+                public String outputFile(TableInfo tableInfo) {
+                    makeDir(projectPath + XML_OUTPUT_PATH);
+                    return projectPath + XML_OUTPUT_PATH + "Base" + tableInfo.getMapperName() + StringPool.DOT_XML;
+                }
+            });
+        }
+
+        //mapperExt xml文件输出
+        if (mapperXFlag) {
+            list.add(new FileOutConfig(XMLEXT_TEMPLATE) {
+                @Override
+                public String outputFile(TableInfo tableInfo) {
+                    makeDir(projectPath + XML_OUTPUT_PATH);
+                    return projectPath + XMLEXT_OUTPUT_PATH + tableInfo.getMapperName() + StringPool.DOT_XML;
+                }
+            });
+        }
+
+        // mapper文件输出
+        if (mapperJFlag) {
+            list.add(new FileOutConfig(MAPPER_TEMPLATE) {
+                @Override
+                public String outputFile(TableInfo tableInfo) {
+                    makeDir(projectPath + MAPPER_OUTPUT_PATH);
+                    return projectPath + MAPPER_OUTPUT_PATH + tableInfo.getMapperName() + StringPool.DOT_JAVA;
+                }
+            });
+        }
+        // mapperParent文件输出
+        if (mapperParentJFlag) {
+            list.add(new FileOutConfig(BASEMAPPER_TEMPLATE) {
+                @Override
+                public String outputFile(TableInfo tableInfo) {
+                    makeDir(projectPath + MAPPER_OUTPUT_PATH);
+                    return projectPath + BASEMAPPER_OUTPUT_PATH + tableInfo.getMapperName() + "Parent" + StringPool.DOT_JAVA;
+                }
+            });
+        }
+
+
+        // service文件输出
+        if (serviceFlag) {
+            list.add(new FileOutConfig(SERVICE_TEMPLATE) {
+                @Override
+                public String outputFile(TableInfo tableInfo) {
+                    makeDir(projectPath + SERVICE_OUTPUT_PATH);
+                    return projectPath + SERVICE_OUTPUT_PATH + tableInfo.getServiceName() + StringPool.DOT_JAVA;
+                }
+            });
+        }
+
+        // service impl文件输出
+        if (serviceImplFlag) {
+            list.add(new FileOutConfig(SERVICE_IMPL_TEMPLATE) {
+                @Override
+                public String outputFile(TableInfo tableInfo) {
+                    makeDir(projectPath + SERVICE_IMPL_OUTPUT_PATH);
+                    return projectPath + SERVICE_IMPL_OUTPUT_PATH + tableInfo.getServiceImplName() + StringPool.DOT_JAVA;
+                }
+            });
+        }
+
+        // controller文件输出
+        //        list.add(new FileOutConfig(CONTROLLER_TEMPLATE) {
+        //            @Override
+        //            public String outputFile(TableInfo tableInfo) {
+        //                makeDir(projectPath + CONTROLLER_OUTPUT_PATH);
+        //                return projectPath + CONTROLLER_OUTPUT_PATH + tableInfo.getControllerName() + StringPool.DOT_JAVA;
+        //            }
+        //        });
+
+        return list;
+    }
+
+    /**
+     * @Author songxl
+     * @Description 创建文件夹
+     * @Date 2021/7/1
+     * @Param [path]
+     * @Return void
+     * @MethodName makeDir
+     */
+    private static void makeDir(String path) {
+
+        File dir = new File(path);
+        if (!dir.exists()) {
+            dir.mkdirs();
+        }
+    }
+
+    /**
+     * @Author songxl
+     * @Description 判断文件是否存在
+     * @Date 2021/7/1
+     * @Param [path]
+     * @Return boolean
+     * @MethodName isExists
+     */
+    private static boolean isExists(String path) {
+
+
+        File file = new File(path);
+        return file.exists();
+    }
+
+    /**
+     * @Author songxl
+     * @Description 自动生成类方法
+     * @Date 2021/7/5
+     * @Param [username, password, url, tables, entityIgnorePrefix]
+     * @Return void
+     * @MethodName create
+     */
+    public static void create(String username, String password, String url, String[] tables, String[] entityIgnorePrefix) {
+        // 全局配置
+        GlobalConfig globalConfig = globalConfig();
+        // 数据源配置
+        DataSourceConfig dataSourceConfig = dataSourceConfig(url, username, password);
+        // 策略配置
+        StrategyConfig strategyConfig = strategyConfig(tables, entityIgnorePrefix);
+        // 包配置
+        PackageConfig packageConfig = packageConfig();
+        // 模板配置
+        TemplateConfig templateConfig = templateConfig();
+        // 自定义配置
+        InjectionConfig injectionConfig = injectionConfig();
+
+        // 执行
+        new AutoGenerator().setGlobalConfig(globalConfig)
+                .setDataSource(dataSourceConfig)
+                .setStrategy(strategyConfig)
+                .setPackageInfo(packageConfig)
+                // 因为使用了自定义模板,所以需要把各项置空否则会多生成一次
+                .setTemplate(templateConfig)
+                // 使用的模板引擎,如果不是默认模板引擎则需要添加模板依赖到pom
+                .setTemplateEngine(new FreemarkerTemplateEngine())
+                .setCfg(injectionConfig)
+                .execute();
+    }
+}

+ 13 - 0
gateway-service/pom.xml

@@ -55,4 +55,17 @@
         </dependency>
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>

+ 13 - 0
monitor-service/pom.xml

@@ -34,4 +34,17 @@
 
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>

+ 33 - 6
pom.xml

@@ -25,6 +25,7 @@
         <module>gateway-service</module>
         <module>monitor-service</module>
         <module>security-center</module>
+        <module>dblayer-mbg</module>
     </modules>
 
     <properties>
@@ -42,6 +43,9 @@
         <guava.version>28.1-jre</guava.version>
         <txlcn-tc.version>5.0.2.RELEASE</txlcn-tc.version>
         <txlcn-txmsg-netty.version>5.0.2.RELEASE</txlcn-txmsg-netty.version>
+        <docker-maven-plugin.version>1.2.2</docker-maven-plugin.version>
+        <docker.image.prefix>192.168.2.121:5000/diagbotcloud</docker.image.prefix>
+        <registryUrl>http://192.168.2.121:5000/repository/diagbotcloud/</registryUrl>
     </properties>
 
     <dependencyManagement>
@@ -143,12 +147,35 @@
     </dependencies>
 
     <build>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                </plugin>
+                <plugin>
+                    <groupId>com.spotify</groupId>
+                    <artifactId>docker-maven-plugin</artifactId>
+                    <version>${docker-maven-plugin.version}</version>
+                    <configuration>
+                        <imageName>emrais/${project.artifactId}:${project.version}</imageName>
+                        <baseImage>java:8</baseImage>
+                        <forceTags>true</forceTags>
+                        <entryPoint>["/bin/sh", "-c", "java $JAVA_OPTS", "-jar", "/${project.build.finalName}.jar"]
+                        </entryPoint>
+                        <resources>
+                            <resource>
+                                <targetPath>/</targetPath>
+                                <directory>${project.build.directory}</directory>
+                                <include>${project.build.finalName}.jar</include>
+                            </resource>
+                        </resources>
+                        <serverId>docker-registry</serverId>
+                        <registryUrl>${registryUrl}</registryUrl>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
     </build>
 
 </project>

+ 13 - 0
register-center/pom.xml

@@ -27,4 +27,17 @@
 
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>

+ 3 - 1
register-center/src/main/resources/bootstrap.yml

@@ -31,4 +31,6 @@ management:
         include: '*'
   endpoint:
     health:
-      show-details: always
+      show-details: always
+
+myname: testJdk

+ 3 - 3
security-center/src/main/resources/freemarker/baseMapper.xml.ftl

@@ -12,15 +12,15 @@
     <resultMap id="BaseResultMap" type="${package.Entity}.${entity}">
 <#list table.fields as field>
 <#if field.keyFlag><#--生成主键排在第一位-->
-        <id column="${field.name}" property="${field.propertyName}" />
+        <id column="${field.name}" property="${field.propertyName}"/>
 </#if>
 </#list>
 <#list table.commonFields as field><#--生成公共字段 -->
-    <result column="${field.name}" property="${field.propertyName}" />
+    <result column="${field.name}" property="${field.propertyName}"/>
 </#list>
 <#list table.fields as field>
 <#if !field.keyFlag><#--生成普通字段 -->
-        <result column="${field.name}" property="${field.propertyName}" />
+        <result column="${field.name}" property="${field.propertyName}"/>
 </#if>
 </#list>
     </resultMap>

+ 11 - 7
security-center/src/main/resources/freemarker/entity.java.ftl

@@ -1,18 +1,22 @@
 package ${package.Entity};
 
-<#list table.importPackages as pkg>
+<#list (table.importPackages)?sort as pkg>
+<#if !pkg?contains('java.')>
 import ${pkg};
-</#list>
-<#if swagger2>
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 </#if>
+</#list>
 <#if entityLombokModel>
 import lombok.Data;
 <#--import lombok.EqualsAndHashCode;-->
-import lombok.experimental.Accessors;
+<#--import lombok.experimental.Accessors;-->
 </#if>
 
+<#list (table.importPackages)?sort as pkg>
+<#if pkg?contains('java.')>
+import ${pkg};
+</#if>
+</#list>
+
 /**
  * <p>
  * ${table.comment!}
@@ -28,7 +32,7 @@ import lombok.experimental.Accessors;
     <#--<#else>-->
 <#--@EqualsAndHashCode(callSuper = false)-->
     <#--</#if>-->
-@Accessors(chain = true)
+<#--@Accessors(chain = true)-->
 </#if>
 <#if table.convert>
 @TableName("${table.name}")

+ 1 - 0
security-center/src/main/resources/freemarker/facade.java.ftl

@@ -2,6 +2,7 @@ package ${package.Controller};
 
 import ${package.ServiceImpl}.${table.serviceImplName};
 import org.springframework.stereotype.Component;
+
 /**
  * <p>
  * ${table.comment!} 服务实现类Facade

+ 1 - 1
security-center/src/main/resources/freemarker/mapper.java.ftl

@@ -1,7 +1,7 @@
 package ${package.Mapper};
 
-import ${package.Entity}.${entity};
 import ${superMapperClassPackage};
+import ${package.Entity}.${entity};
 
 /**
  * <p>

+ 1 - 1
security-center/src/main/resources/freemarker/service.java.ftl

@@ -1,7 +1,7 @@
 package ${package.Service};
 
-import ${package.Entity}.${entity};
 import ${superServiceClassPackage};
+import ${package.Entity}.${entity};
 
 /**
  * <p>

+ 1 - 1
security-center/src/main/resources/freemarker/serviceImpl.java.ftl

@@ -1,9 +1,9 @@
 package ${package.ServiceImpl};
 
+import ${superServiceImplClassPackage};
 import ${package.Entity}.${entity};
 import ${package.Mapper}.${table.mapperName};
 import ${package.Service}.${table.serviceName};
-import ${superServiceImplClassPackage};
 import org.springframework.stereotype.Service;
 
 /**

+ 0 - 83
security-center/src/test/java/com/diagbot/CodeGeneration.java

@@ -1,83 +0,0 @@
-package com.diagbot;
-
-import com.baomidou.mybatisplus.annotation.DbType;
-import com.baomidou.mybatisplus.generator.AutoGenerator;
-import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
-import com.baomidou.mybatisplus.generator.config.GlobalConfig;
-import com.baomidou.mybatisplus.generator.config.PackageConfig;
-import com.baomidou.mybatisplus.generator.config.StrategyConfig;
-import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
-import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
-
-/**
- * @Description: 代码生成器
- * @author: gaodm
- * @time: 2018/8/2 10:15
- */
-public class CodeGeneration {
-
-    /**
-     *
-     * @Title: main
-     * @Description: 生成
-     * @param args
-     */
-    public static void main(String[] args) {
-        AutoGenerator mpg = new AutoGenerator();
-
-        // 全局配置
-        GlobalConfig gc = new GlobalConfig();
-        gc.setOutputDir("D://code1");
-        gc.setFileOverride(true);
-        gc.setActiveRecord(false);// 不需要ActiveRecord特性的请改为false
-        gc.setEnableCache(false);// XML 二级缓存
-        gc.setBaseResultMap(true);// XML ResultMap
-        gc.setBaseColumnList(false);// XML columList
-        gc.setAuthor("zhanghang");// 作者
-
-        // 自定义文件命名,注意 %s 会自动填充表实体属性!
-        gc.setControllerName("%sController");
-        gc.setServiceName("%sService");
-        gc.setServiceImplName("%sServiceImpl");
-        gc.setMapperName("%sMapper");
-        gc.setXmlName("%sMapper");
-        mpg.setGlobalConfig(gc);
-
-        // 数据源配置
-        DataSourceConfig dsc = new DataSourceConfig();
-        dsc.setDbType(DbType.MYSQL);
-        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
-        dsc.setUsername("root");
-        dsc.setPassword("lantone");
-        dsc.setUrl("jdbc:mysql://192.168.2.236:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
-        mpg.setDataSource(dsc);
-
-        // 策略配置
-        StrategyConfig strategy = new StrategyConfig();
-//        strategy.setTablePrefix(new String[] { "med_" });// 此处可以修改为您的表前缀
-        strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude(new String[] { "med_check_info"}); // 需要生成的表
-
-        strategy.setSuperServiceClass(null);
-        strategy.setSuperServiceImplClass(null);
-        strategy.setSuperMapperClass(null);
-
-        mpg.setStrategy(strategy);
-
-        // 包配置
-        PackageConfig pc = new PackageConfig();
-        pc.setParent("com.diagbot");
-        pc.setController("web");
-        pc.setService("service");
-        pc.setServiceImpl("service.impl");
-        pc.setMapper("mapper");
-        pc.setEntity("entity");
-        pc.setXml("resources.mapper");
-        mpg.setPackageInfo(pc);
-
-        // 执行生成
-        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
-        mpg.execute();
-
-    }
-}

+ 0 - 16
security-center/src/test/java/com/diagbot/MrqcSysApplicationTests.java

@@ -1,16 +0,0 @@
-package com.diagbot;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest
-public class MrqcSysApplicationTests {
-
-    @Test
-    public void contextLoads() {
-    }
-
-}

+ 13 - 0
structure-center/pom.xml

@@ -44,4 +44,17 @@
 
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>