Jelajahi Sumber

新增读取src/java/底下的xml和代码生成器

赵冬冬 4 tahun lalu
induk
melakukan
44d9263d71

+ 0 - 1
future-admin/src/main/java/com/future/module/area/controller/PmsBasePositiontController.java

@@ -1,7 +1,6 @@
 package com.future.module.area.controller;
 
 
-import com.future.common.core.domain.AjaxResult;
 import com.future.common.core.domain.AjaxResultVo;
 import com.future.common.validate.annotation.NullSize;
 import com.future.module.area.model.vo.AreaVo;

+ 0 - 58
future-admin/src/main/java/com/future/module/base/model/entity/User.java

@@ -1,58 +0,0 @@
-package com.future.module.base.model.entity;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
-@ApiModel("用户实体")
-public class User {
-    @ApiModelProperty("用户ID")
-    private Integer userId;
-
-    @ApiModelProperty("用户名称")
-    private String username;
-
-    @ApiModelProperty("用户密码")
-    private String password;
-
-    @ApiModelProperty("用户手机")
-    private String mobile;
-
-    public User(Integer userId, String username, String password, String mobile) {
-        this.userId = userId;
-        this.username = username;
-        this.password = password;
-        this.mobile = mobile;
-    }
-
-    public Integer getUserId() {
-        return userId;
-    }
-
-    public void setUserId(Integer userId) {
-        this.userId = userId;
-    }
-
-    public String getUsername() {
-        return username;
-    }
-
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    public String getMobile() {
-        return mobile;
-    }
-
-    public void setMobile(String mobile) {
-        this.mobile = mobile;
-    }
-}

+ 37 - 0
future-gencodelocal/pom.xml

@@ -0,0 +1,37 @@
+<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>future</artifactId>
+        <groupId>com.future</groupId>
+        <version>3.4.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>future-gencodelocal</artifactId>
+
+    <dependencies>
+        <!-- 通用工具-->
+        <dependency>
+            <groupId>com.future</groupId>
+            <artifactId>future-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.mybatis.generator</groupId>
+            <artifactId>mybatis-generator-core</artifactId>
+            <version>1.3.7</version>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+    </dependencies>
+
+
+
+</project>

+ 158 - 0
future-gencodelocal/src/main/java/com/CommentGenerator.java

@@ -0,0 +1,158 @@
+package com;
+
+import org.mybatis.generator.api.IntrospectedColumn;
+import org.mybatis.generator.api.IntrospectedTable;
+import org.mybatis.generator.api.dom.java.*;
+import org.mybatis.generator.internal.DefaultCommentGenerator;
+import org.mybatis.generator.internal.util.StringUtility;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Properties;
+
+public class CommentGenerator extends DefaultCommentGenerator {
+
+    private static final String EXAMPLE_SUFFIX="Example";
+    private static final String API_MODEL_PROPERTY_FULL_CLASS_NAME="io.swagger.annotations.ApiModelProperty";
+    private static final String API_MODEL_FULL_CLASS_NAME="io.swagger.annotations.ApiModel";
+
+
+    private Properties properties;
+    private Properties systemPro;
+    private boolean suppressDate;
+    private boolean suppressAllComments;
+    private String currentDateStr;
+
+    public CommentGenerator() {
+        super();
+        properties = new Properties();
+        systemPro = System.getProperties();
+        suppressDate = false;
+        suppressAllComments = false;
+        currentDateStr = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date());
+    }
+
+    public void addFieldComment(Field field, IntrospectedTable introspectedTable,
+                                IntrospectedColumn introspectedColumn) {
+        if (suppressAllComments) {
+            return;
+        }
+        StringBuilder sb = new StringBuilder();
+        field.addJavaDocLine("/**");
+        sb.append(" * ");
+        sb.append(introspectedColumn.getRemarks());
+        sb.append("\n");
+        sb.append("	* 列名:" + introspectedColumn.getActualColumnName() + " 类型:" + introspectedColumn.getJdbcTypeName()
+                + "(" + introspectedColumn.getLength() + ")" + " 允许空:" + introspectedColumn.isNullable() + " 缺省值:"
+                + introspectedColumn.getDefaultValue());
+        field.addJavaDocLine(sb.toString());
+        String remarks = introspectedColumn.getRemarks();
+        //根据参数和备注信息判断是否添加备注信息
+        if(StringUtility.stringHasValue(remarks)){
+//            addFieldJavaDoc(field, remarks);
+            //数据库中特殊字符需要转义
+            if(remarks.contains("\"")){
+                remarks = remarks.replace("\"","'");
+            }
+            //给model的字段添加swagger注解
+        }
+        field.addJavaDocLine(" */");
+        field.addJavaDocLine("@ApiModelProperty(value = \""+remarks+"\")");
+
+    }
+
+    public void addFieldComment(Field field, IntrospectedTable introspectedTable) {
+
+    }
+
+    public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {
+
+        if (suppressAllComments) {
+            return;
+        }
+        StringBuilder sb = new StringBuilder();
+        sb.append("/**");
+        sb.append("\n");
+        sb.append("	* ");
+        sb.append("\n");
+        sb.append("	* @author zhangsan" + "\n");
+        if (!suppressDate) {
+
+            sb.append("	* @date " + currentDateStr + "\n");
+
+        }
+
+        List<Parameter> parameters = method.getParameters();
+
+        for (Parameter parameter : parameters) {
+
+            sb.append("	* @param " + parameter.getName() + "\n");
+
+        }
+
+        sb.append("	* @return " + method.getReturnType());
+        sb.append("\n" + "	*/");
+        method.addJavaDocLine(sb.toString());
+    }
+
+    public void addGetterComment(Method method, IntrospectedTable introspectedTable,
+                                 IntrospectedColumn introspectedColumn) {
+
+    }
+
+    public void addSetterComment(Method method, IntrospectedTable introspectedTable,
+                                 IntrospectedColumn introspectedColumn) {
+
+    }
+
+    public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean markAsDoNotDelete) {
+
+        super.addClassComment(innerClass, introspectedTable, markAsDoNotDelete);
+    }
+
+    public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) {
+
+    }
+
+
+    public void addModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
+
+        if (suppressAllComments) {
+            return;
+        }
+        StringBuilder sb = new StringBuilder();
+        sb.append("/**");
+        sb.append("\n");
+        sb.append("* ");
+        sb.append("\n");
+        sb.append("* @author zhangsan" + "\n");
+        if (!suppressDate) {
+
+            sb.append("* @date " + currentDateStr + "\n");
+
+        }
+        String tableName =  introspectedTable.getFullyQualifiedTableNameAtRuntime();
+        sb.append("* 数据表" +introspectedTable.getFullyQualifiedTableNameAtRuntime() + "映射bean,由Mybaits自动生成工具生成");
+        sb.append("\n" + "*/");
+        topLevelClass.addJavaDocLine(sb.toString());
+
+//        topLevelClass.addJavaDocLine("@ApiModel(value = \""+tableName+"\")");
+
+
+    }
+
+    @Override
+    public void addJavaFileComment(CompilationUnit compilationUnit) {
+        super.addJavaFileComment(compilationUnit);
+        //只在model中添加swagger注解类的导入
+        if(!compilationUnit.isJavaInterface()&&!compilationUnit.getType().getFullyQualifiedName().contains(EXAMPLE_SUFFIX)){
+            compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_PROPERTY_FULL_CLASS_NAME));
+        }
+        if(!compilationUnit.isJavaInterface()&&!compilationUnit.getType().getFullyQualifiedName().contains(EXAMPLE_SUFFIX)){
+//            compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_FULL_CLASS_NAME));
+            compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_PROPERTY_FULL_CLASS_NAME));
+        }
+    }
+
+}

+ 38 - 0
future-gencodelocal/src/main/java/com/Generator.java

@@ -0,0 +1,38 @@
+package com;
+
+import org.mybatis.generator.api.MyBatisGenerator;
+import org.mybatis.generator.config.Configuration;
+import org.mybatis.generator.config.xml.ConfigurationParser;
+import org.mybatis.generator.internal.DefaultShellCallback;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 用于生产MBG的代码
+ * Created by macro on 2018/4/26.
+ */
+public class Generator {
+    public static void main(String[] args) throws Exception {
+        //MBG 执行过程中的警告信息
+        List<String> warnings = new ArrayList<String>();
+        //当生成的代码重复时,覆盖原代码
+        boolean overwrite = true;
+        //读取我们的 MBG 配置文件
+        InputStream is = Generator.class.getResourceAsStream("/generatorConfig.xml");
+        ConfigurationParser cp = new ConfigurationParser(warnings);
+        Configuration config = cp.parseConfiguration(is);
+        is.close();
+
+        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
+        //创建 MBG
+        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
+        //执行生成代码
+        myBatisGenerator.generate(null);
+        //输出警告信息
+        for (String warning : warnings) {
+            System.out.println(warning);
+        }
+    }
+}

+ 10 - 0
future-gencodelocal/src/main/resources/generator.properties

@@ -0,0 +1,10 @@
+jdbc.driverClass=com.mysql.cj.jdbc.Driver
+jdbc.connectionURL=jdbc:mysql://49.235.127.212:3306/future?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
+jdbc.userId=root
+jdbc.password=123456
+##表明
+jdbc.table=pms_base_position
+##生成实体名称
+java.entity=Position
+##模块名称
+java.module=position

+ 44 - 0
future-gencodelocal/src/main/resources/generatorConfig.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE generatorConfiguration
+        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
+        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
+
+<generatorConfiguration>
+    <properties resource="generator.properties"/>
+    <context id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat">
+        <property name="beginningDelimiter" value="`"/>
+        <property name="endingDelimiter" value="`"/>
+        <property name="javaFileEncoding" value="UTF-8"/>
+        <!-- 为模型生成序列化方法-->
+        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
+        <!-- 为生成的Java模型创建一个toString方法 -->
+        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
+        <!--生成mapper.xml时覆盖原文件-->
+        <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
+        <commentGenerator type="com.CommentGenerator">
+            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
+            <property name="suppressAllComments" value="true"/>
+            <property name="suppressDate" value="true"/>
+            <property name="addRemarkComments" value="true"/>
+        </commentGenerator>
+
+        <jdbcConnection driverClass="${jdbc.driverClass}"
+                        connectionURL="${jdbc.connectionURL}"
+                        userId="${jdbc.userId}"
+                        password="${jdbc.password}">
+            <!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题-->
+            <property name="nullCatalogMeansCurrent" value="true" />
+        </jdbcConnection>
+
+        <javaModelGenerator targetPackage="com.future.module.${java.module}.model.entity" targetProject="future-gencodelocal\src\main\java"/>
+
+        <sqlMapGenerator targetPackage="com.future.module.${java.module}.mapper" targetProject="future-gencodelocal\src\main\java"/>
+
+        <javaClientGenerator type="XMLMAPPER" targetPackage="com.future.module.${java.module}.mapper"
+                             targetProject="future-gencodelocal\src\main\java"/>
+        <!--表tableName-->
+        <table tableName="${jdbc.table}" domainObjectName="${java.entity}">
+            <generatedKey column="id" sqlStatement="MySql" identity="true"/>
+        </table>
+    </context>
+</generatorConfiguration>

+ 1 - 0
pom.xml

@@ -218,6 +218,7 @@
         <module>future-quartz</module>
         <module>future-generator</module>
         <module>future-common</module>
+        <module>future-gencodelocal</module>
     </modules>
     <packaging>pom</packaging>