springcloud
父工程的搭建
给父工程起名字
确认创建
点击Finish
设置字符集编码
注解激活生效
设置java编译器
删除src目录,导入依赖
点击查看代码
<packaging>pom</packaging>
<!-- 统一管理jar包版本 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<junit.version>4.12</junit.version>
<log4j.version>1.2.17</log4j.version>
<lombok.version>1.16.18</lombok.version>
<mysql.version>5.1.47</mysql.version>
<druid.version>1.1.16</druid.version>
<mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
</properties>
<!-- 子模块继承之后,提供作用:锁定版本+子modlue不用写groupId和version,
子模块还是要引入依赖的,这个只是提供版本而已,如果子模块写版本号,就不使用父工程的版本 -->
<!--
dependencyManagement 说明这个是父pom文件 进行管理 子pom文件进行引用 不需要指定 依赖的版本号 直接 使用父pom的版本
-->
<dependencyManagement>
<dependencies>
<!--spring boot 2.2.2-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud Hoxton.SR1-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud alibaba 2.1.0.RELEASE-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!--排除默认的tomcat-jdbc-->
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.spring.boot.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<optional>true</optional>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
编写yml文件
配置逆向工程generator
点击查看CustomCommentGenerator代码
package com.wangjiazhen.springcloud.util;
import org.mybatis.generator.api.CommentGenerator;
import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.api.dom.java.*;
import org.mybatis.generator.api.dom.xml.TextElement;
import org.mybatis.generator.api.dom.xml.XmlElement;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
import org.mybatis.generator.internal.util.StringUtility;
import javax.xml.bind.DatatypeConverter;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* mybatis文件生成自定义注释
* @author liuyu
*/
public class CustomCommentGenerator implements CommentGenerator {
public static void main(String[] args) throws Exception {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("cloud-provider-payment-8001/src/main/resources/generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
}
private Properties properties = new Properties();
private boolean suppressDate = false;
private boolean suppressAllComments = false;
private boolean addRemarkComments = false;
private SimpleDateFormat dateFormat;
public CustomCommentGenerator() {
}
public void addJavaFileComment(CompilationUnit compilationUnit) {
}
public void addComment(XmlElement xmlElement) {
if (!this.suppressAllComments) {
xmlElement.addElement(new TextElement("<!--"));
StringBuilder sb = new StringBuilder();
sb.append(" WARNING - ");
sb.append("@mbg.generated");
xmlElement.addElement(new TextElement(sb.toString()));
xmlElement.addElement(new TextElement(" This element is automatically generated by MyBatis Generator, do not modify."));
String s = this.getDateString();
if (s != null) {
sb.setLength(0);
sb.append(" This element was generated on ");
sb.append(s);
sb.append('.');
xmlElement.addElement(new TextElement(sb.toString()));
}
xmlElement.addElement(new TextElement("-->"));
}
}
public void addRootComment(XmlElement rootElement) {
}
public void addConfigurationProperties(Properties properties) {
this.properties.putAll(properties);
this.suppressDate = StringUtility.isTrue(properties.getProperty("suppressDate"));
this.suppressAllComments = StringUtility.isTrue(properties.getProperty("suppressAllComments"));
this.addRemarkComments = StringUtility.isTrue(properties.getProperty("addRemarkComments"));
String dateFormatString = properties.getProperty("dateFormat");
if (StringUtility.stringHasValue(dateFormatString)) {
this.dateFormat = new SimpleDateFormat(dateFormatString);
}
}
protected void addJavadocTag(JavaElement javaElement, boolean markAsDoNotDelete) {
javaElement.addJavaDocLine(" *");
StringBuilder sb = new StringBuilder();
sb.append(" * ");
sb.append("@mbg.generated");
if (markAsDoNotDelete) {
sb.append(" do_not_delete_during_merge");
}
String s = this.getDateString();
if (s != null) {
sb.append(' ');
sb.append(s);
}
javaElement.addJavaDocLine(sb.toString());
}
protected String getDateString() {
if (this.suppressDate) {
return null;
} else {
return this.dateFormat != null ? this.dateFormat.format(new Date()) : (new Date()).toString();
}
}
public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) {
if (!this.suppressAllComments) {
StringBuilder sb = new StringBuilder();
innerClass.addJavaDocLine("/**");
innerClass.addJavaDocLine(" * This class was generated by MyBatis Generator.");
sb.append(" * This class corresponds to the database table ");
sb.append(introspectedTable.getFullyQualifiedTable());
innerClass.addJavaDocLine(sb.toString());
this.addJavadocTag(innerClass, false);
innerClass.addJavaDocLine(" */");
}
}
public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean markAsDoNotDelete) {
if (!this.suppressAllComments) {
StringBuilder sb = new StringBuilder();
innerClass.addJavaDocLine("/**");
innerClass.addJavaDocLine(" * This class was generated by MyBatis Generator.");
sb.append(" * This class corresponds to the database table ");
sb.append(introspectedTable.getFullyQualifiedTable());
innerClass.addJavaDocLine(sb.toString());
this.addJavadocTag(innerClass, markAsDoNotDelete);
innerClass.addJavaDocLine(" */");
}
}
public void addModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
if (!this.suppressAllComments && this.addRemarkComments) {
topLevelClass.addJavaDocLine("/**");
String remarks = introspectedTable.getRemarks();
if (this.addRemarkComments && StringUtility.stringHasValue(remarks)) {
topLevelClass.addJavaDocLine(" * Database Table Remarks:");
String[] remarkLines = remarks.split(System.getProperty("line.separator"));
String[] var5 = remarkLines;
int var6 = remarkLines.length;
for(int var7 = 0; var7 < var6; ++var7) {
String remarkLine = var5[var7];
topLevelClass.addJavaDocLine(" * " + remarkLine);
}
}
topLevelClass.addJavaDocLine(" *");
topLevelClass.addJavaDocLine(" * This class was generated by MyBatis Generator.");
StringBuilder sb = new StringBuilder();
sb.append(" * This class corresponds to the database table ");
sb.append(introspectedTable.getFullyQualifiedTable());
topLevelClass.addJavaDocLine(sb.toString());
this.addJavadocTag(topLevelClass, true);
topLevelClass.addJavaDocLine(" */");
}
}
public void addEnumComment(InnerEnum innerEnum, IntrospectedTable introspectedTable) {
if (!this.suppressAllComments) {
StringBuilder sb = new StringBuilder();
innerEnum.addJavaDocLine("/**");
innerEnum.addJavaDocLine(" * This enum was generated by MyBatis Generator.");
sb.append(" * This enum corresponds to the database table ");
sb.append(introspectedTable.getFullyQualifiedTable());
innerEnum.addJavaDocLine(sb.toString());
this.addJavadocTag(innerEnum, false);
innerEnum.addJavaDocLine(" */");
}
}
public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
if (!this.suppressAllComments) {
field.addJavaDocLine("/**");
String remarks = introspectedColumn.getRemarks();
if (this.addRemarkComments && StringUtility.stringHasValue(remarks)) {
field.addJavaDocLine(" * Database Column Remarks:");
String[] remarkLines = remarks.split(System.getProperty("line.separator"));
String[] var6 = remarkLines;
int var7 = remarkLines.length;
for(int var8 = 0; var8 < var7; ++var8) {
String remarkLine = var6[var8];
field.addJavaDocLine(" * " + remarkLine);
}
}
if (!StringUtil.isNull(introspectedColumn.getRemarks())) {
field.addJavaDocLine(" * " + introspectedColumn.getRemarks());
}
StringBuilder sb = new StringBuilder();
/**
* 获取字段注释20200118 update by yu3
* */
sb.append(" * ");
sb.append(introspectedTable.getFullyQualifiedTable());
sb.append('.');
sb.append(introspectedColumn.getActualColumnName());
field.addJavaDocLine(sb.toString());
this.addJavadocTag(field, false);
field.addJavaDocLine(" */");
}
}
public void addFieldComment(Field field, IntrospectedTable introspectedTable) {
if (!this.suppressAllComments) {
StringBuilder sb = new StringBuilder();
field.addJavaDocLine("/**");
if (!StringUtil.isNull(introspectedTable.getRemarks())) {
field.addJavaDocLine(" * " + introspectedTable.getRemarks());
}
/**
* 获取字段注释20200118 update by yu3
* */
sb.append(" * ");
sb.append(introspectedTable.getFullyQualifiedTable());
field.addJavaDocLine(sb.toString());
this.addJavadocTag(field, false);
field.addJavaDocLine(" */");
}
}
public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {
if (!this.suppressAllComments) {
StringBuilder sb = new StringBuilder();
method.addJavaDocLine("/**");
method.addJavaDocLine(" * This method was generated by MyBatis Generator.");
sb.append(" * This method corresponds to the database table ");
sb.append(introspectedTable.getFullyQualifiedTable());
method.addJavaDocLine(sb.toString());
this.addJavadocTag(method, false);
method.addJavaDocLine(" */");
}
}
public void addGetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
if (!this.suppressAllComments) {
StringBuilder sb = new StringBuilder();
method.addJavaDocLine("/**");
if (!StringUtil.isNull(introspectedColumn.getRemarks())) {
method.addJavaDocLine(" * " + introspectedColumn.getRemarks());
}
sb.append(" * ");
sb.append(introspectedTable.getFullyQualifiedTable());
sb.append('.');
sb.append(introspectedColumn.getActualColumnName());
method.addJavaDocLine(sb.toString());
method.addJavaDocLine(" *");
sb.setLength(0);
sb.append(" * @return the value of ");
sb.append(introspectedTable.getFullyQualifiedTable());
sb.append('.');
sb.append(introspectedColumn.getActualColumnName());
method.addJavaDocLine(sb.toString());
this.addJavadocTag(method, false);
method.addJavaDocLine(" */");
}
}
public void addSetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
if (!this.suppressAllComments) {
StringBuilder sb = new StringBuilder();
method.addJavaDocLine("/**");
if (!StringUtil.isNull(introspectedColumn.getRemarks())) {
method.addJavaDocLine(" * " + introspectedColumn.getRemarks());
}
sb.append(" * "+introspectedTable.getFullyQualifiedTable() + ".");
sb.append(introspectedColumn.getActualColumnName());
method.addJavaDocLine(sb.toString());
method.addJavaDocLine(" *");
Parameter parm = (Parameter)method.getParameters().get(0);
sb.setLength(0);
sb.append(" * @param ");
sb.append(parm.getName());
sb.append(" the value for ");
sb.append(introspectedTable.getFullyQualifiedTable());
sb.append('.');
sb.append(introspectedColumn.getActualColumnName());
method.addJavaDocLine(sb.toString());
this.addJavadocTag(method, false);
method.addJavaDocLine(" */");
}
}
public void addGeneralMethodAnnotation(Method method, IntrospectedTable introspectedTable, Set<FullyQualifiedJavaType> imports) {
imports.add(new FullyQualifiedJavaType("javax.annotation.Generated"));
String comment = "Source Table: " + introspectedTable.getFullyQualifiedTable().toString();
method.addAnnotation(this.getGeneratedAnnotation(comment));
}
public void addGeneralMethodAnnotation(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn, Set<FullyQualifiedJavaType> imports) {
imports.add(new FullyQualifiedJavaType("javax.annotation.Generated"));
String comment = "Source field: " + introspectedTable.getFullyQualifiedTable().toString() + "." + introspectedColumn.getActualColumnName();
method.addAnnotation(this.getGeneratedAnnotation(comment));
}
public void addFieldAnnotation(Field field, IntrospectedTable introspectedTable, Set<FullyQualifiedJavaType> imports) {
imports.add(new FullyQualifiedJavaType("javax.annotation.Generated"));
String comment = "Source Table: " + introspectedTable.getFullyQualifiedTable().toString();
field.addAnnotation(this.getGeneratedAnnotation(comment));
}
public void addFieldAnnotation(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn, Set<FullyQualifiedJavaType> imports) {
imports.add(new FullyQualifiedJavaType("javax.annotation.Generated"));
String comment = "Source field: " + introspectedTable.getFullyQualifiedTable().toString() + "." + introspectedColumn.getActualColumnName();
field.addAnnotation(this.getGeneratedAnnotation(comment));
}
public void addClassAnnotation(InnerClass innerClass, IntrospectedTable introspectedTable, Set<FullyQualifiedJavaType> imports) {
imports.add(new FullyQualifiedJavaType("javax.annotation.Generated"));
String comment = "Source Table: " + introspectedTable.getFullyQualifiedTable().toString();
innerClass.addAnnotation(this.getGeneratedAnnotation(comment));
}
private String getGeneratedAnnotation(String comment) {
StringBuilder buffer = new StringBuilder();
buffer.append("@Generated(");
if (this.suppressAllComments) {
buffer.append('"');
} else {
buffer.append("value=\"");
}
buffer.append(MyBatisGenerator.class.getName());
buffer.append('"');
if (!this.suppressDate && !this.suppressAllComments) {
buffer.append(", date=\"");
buffer.append(DatatypeConverter.printDateTime(Calendar.getInstance()));
buffer.append('"');
}
if (!this.suppressAllComments) {
buffer.append(", comments=\"");
buffer.append(comment);
buffer.append('"');
}
buffer.append(')');
return buffer.toString();
}
}
点击查看StringUtil代码
package com.wangjiazhen.springcloud.util;
import com.alibaba.fastjson.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringUtil {
private static final Logger log = LoggerFactory.getLogger(StringUtil.class);
public static void main(String[] args) {
Integer xtcz = 11;
System.out.println(String.format("%06d", xtcz));
}
public static String xtczsjToTimeStr(Integer xtczsj, String format) {
return toTimeStr(xtczsj, format, 1);
}
public static String xtczrqToTimeStr(Integer xtczrq, String format) {
return toTimeStr(xtczrq, format, 0);
}
/**
* @param xtcz
* @param format
* @param type 0-xtczrq 1-xtczsj
* @return
*/
public static String toTimeStr(Integer xtcz, String format, Integer type) {
String result = "";
String reg = type == 1 ? "%06d" : "%08d";
String fmtStr = type == 1 ? "HHmmss" : "yyyyMMdd";
String timeStr = String.format(reg, xtcz);
SimpleDateFormat fmt = new SimpleDateFormat(fmtStr);
Date date = null;
try {
date = fmt.parse(timeStr);
} catch (Exception e) {
log.error("时间转换异常" + timeStr, e);
}
if (date != null) {
SimpleDateFormat resultFmt = new SimpleDateFormat(format);
result = resultFmt.format(date);
}
return result;
}
//校验中征码
public static boolean checkZZM(String value) {
//先进行正则匹配
String reg = "^[A-Z0-9]{3}[A-Z0-9]{13}$";
if (!value.matches(reg)) {
return false;
}
//取出校验位
String code = value.substring(14, 16);
//前14位转化为char数组
char[] idCode = value.substring(0, 14).toCharArray();
//加权因子
int[] weight_factor = new int[]{1, 3, 5, 7, 11, 2, 13, 1, 1, 17, 19, 97, 23, 29};
int len = idCode.length;
int num = 0;
int temp = 0;
//循环取和
for (int i = 0; i < len; i++) {
//字母转数字
if (idCode[i] >= 'A' && idCode[i] <= 'Z') {
temp = (int) idCode[i] - 55;
} else {
temp = (int) idCode[i] - 48;
}
//求和
num = num + temp * weight_factor[i];
}
//取余+1
int resisue = num % 97 + 1;
System.out.println(resisue);
return Integer.parseInt(code) - resisue == 0;
}
public static String replaceBlank(String str) {
String dest = "";
if (str != null) {
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(str);
dest = m.replaceAll("");
}
return dest;
}
public static List<Map<String, String>> addressResolution(String address) {
String regex = "((?<province>[^省]+省|.+自治区)|上海|北京|天津|重庆)(?<city>[^市]+市|.+自治州)(?<county>[^县]+县|.+区|.+镇|.+局)?(?<town>[^区]+区|.+镇)?(?<village>.*)";
Matcher m = Pattern.compile(regex).matcher(address);
String province = null, city = null, county = null, town = null, village = null;
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> row = null;
while (m.find()) {
row = new LinkedHashMap<>();
province = m.group("province");
row.put("province", province == null ? "" : province.trim());
city = m.group("city");
row.put("city", city == null ? "" : city.trim());
county = m.group("county");
row.put("county", county == null ? "" : county.trim());
town = m.group("town");
row.put("town", town == null ? "" : town.trim());
village = m.group("village");
row.put("village", village == null ? "" : village.trim());
list.add(row);
}
return list;
}
/**
* 判断是否为空字符串或者为空。
*
* @param param:需要判断的字符串。
* @return false:非空返回 true:空字符串或者null时返回。
*/
public static boolean isNull(String param) {
if (null == param) {
return true;
} else if (0 == param.trim().length()) {
return true;
} else if ("null".equals(param.trim())) {
return true;
} else return "".equals(param.trim());
}
public static String getJSONArrayToSqlin(JSONArray array) {
String result = "";
if (array != null && array.size() > 0) {
result += "(";
for (int i = 0; i < array.size(); i++) {
if (i == array.size() - 1) {
result += array.get(i) + "";
} else {
result += array.get(i) + ",";
}
}
result += ")";
}
return result;
}
public static String getArrayStr(Object[] array, String split) {
String result = "";
if (array != null) {
for (int i = 0; i < array.length; i++) {
if (i == array.length - 1) {
result += array[i];
} else {
result += array[i] + split;
}
}
}
return result;
}
public static String getArrayStr(byte[] array, String split) {
String result = "";
if (array != null) {
for (int i = 0; i < array.length; i++) {
if (i == array.length - 1) {
result += array[i];
} else {
result += array[i] + split;
}
}
}
return result;
}
//为null的转换成""
public static String changeNullToString(String var) {
return var == null ? "" : var;
}
/**
* 64进制
*/
final static char[] digits = {'0', '1', '2', '3', '4', '5', '6', '7', '8',
'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
'9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
'Z', '+', '/',};
/**
* 把10进制的数字转换成64进制
*
* @param number
* @return
*/
public static String number_10_to_64(long number) {
char[] buf = new char[64];
int charPos = 64;
int radix = 1 << 6;
long mask = radix - 1;
do {
buf[--charPos] = digits[(int) (number & mask)];
number >>>= 6;
} while (number != 0);
return new String(buf, charPos, (64 - charPos));
}
/**
* 把64进制的字符串转换成10进制
*
* @param decompStr
* @return
*/
public static long number_64_to_10(String decompStr) {
long result = 0;
for (int i = decompStr.length() - 1; i >= 0; i--) {
for (int j = 0; j < digits.length; j++) {
if (decompStr.charAt(i) == digits[j]) {
result += ((long) j) << 6 * (decompStr.length() - 1 - i);
}
}
}
return result;
}
/**
* 地址字符串优化
*
* @param text
* @return
*/
public static String getAddressStr(String text) {
if (isNull(text)) return "";
if (text.contains("无信息")) return "";
if (text.contains("无信息")) return "";
if (text.contains("解释地址失败")) return "";
if (text.contains("未解析出安装位置信息")) return "";
if (text.contains("地址为空")) return "";
text = text.replaceAll("其它", "");
if (isNull(text)) return "";
return text;
}
/**
* 判断参数是否为null null的情况下返回""
*
* @param o
* @return
*/
public static String changeParam(Object o) {
if (o == null) {
return "";
} else {
return o.toString();
}
}
/**
* 判断参数是否为null null的情况下返回""
*
* @param o
* @return
*/
public static int changeParamInt(Object o) {
if (o == null) {
return 0;
} else {
return Integer.valueOf(o.toString());
}
}
}
点击查看generatorConfig.xml代码
<?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>
<classPathEntry location="D:\MeProject\cloud\cloud-provider-payment-8001\src\main\resources\jar\mysql-connector-java-5.1.39.jar"/>
<context id="oracleGenerator" targetRuntime="MyBatis3">
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
<!-- 自定义Ex也要序列化 -->
<!-- <plugin type="org.xftm.app.util.AllSerializablePlugin"/>-->
<!-- 通过type指定自定义的注释-->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
<commentGenerator type="com.wangjiazhen.springcloud.util.CustomCommentGenerator">
<!-- <property name="suppressDate" value="true"/>-->
<!-- <property name="suppressAllComments" value="true" />-->
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/springcloud"
userId="root"
password="root" />
<javaModelGenerator targetPackage="com.wangjiazhen.springcloud.entity" targetProject="cloud-provider-payment-8001/src/main/java" />
<sqlMapGenerator targetPackage="mapper" targetProject="cloud-provider-payment-8001/src/main/resources" />
<javaClientGenerator type="XMLMAPPER" targetPackage="com.wangjiazhen.springcloud.dao" targetProject="cloud-provider-payment-8001/src/main/java" />
<table tableName ="payment"/>
</context>
</generatorConfiguration>
配置热部署 注意开发的时候开启 发布的时候记得关闭
点击查看热部署代码
<!-- springboot添加热部署支持 -->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-devtools</artifactId>-->
<!-- <optional>true</optional>-->
<!-- </dependency>-->
实现地址
https://blog.csdn.net/qq_16148137/article/details/99694566