@@ -12,6 +12,12 @@ | |||||
<groupId>com.hp</groupId> | <groupId>com.hp</groupId> | ||||
<artifactId>nacos-client</artifactId> | <artifactId>nacos-client</artifactId> | ||||
<version>0.0.1-SNAPSHOT</version> | <version>0.0.1-SNAPSHOT</version> | ||||
<exclusions> | |||||
<exclusion> | |||||
<groupId>org.mybatis.spring.boot</groupId> | |||||
<artifactId>mybatis-spring-boot-starter</artifactId> | |||||
</exclusion> | |||||
</exclusions> | |||||
</dependency> | </dependency> | ||||
<dependency> | <dependency> | ||||
<groupId>com.hp</groupId> | <groupId>com.hp</groupId> | ||||
@@ -30,6 +36,42 @@ | |||||
<version>4.12</version> | <version>4.12</version> | ||||
<scope>test</scope> | <scope>test</scope> | ||||
</dependency> | </dependency> | ||||
<!-- mybatis plus 代码生成器 --> | |||||
<dependency> | |||||
<groupId>com.baomidou</groupId> | |||||
<artifactId>mybatis-plus-boot-starter</artifactId> | |||||
<version>3.3.0</version> | |||||
<exclusions> | |||||
<exclusion> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-starter</artifactId> | |||||
</exclusion> | |||||
</exclusions> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.baomidou</groupId> | |||||
<artifactId>mybatis-plus-generator</artifactId> | |||||
<version>3.3.0</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.freemarker</groupId> | |||||
<artifactId>freemarker</artifactId> | |||||
<version>2.3.28</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.mybatis</groupId> | |||||
<artifactId>mybatis-typehandlers-jsr310</artifactId> | |||||
<version>1.0.1</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.fasterxml.jackson.datatype</groupId> | |||||
<artifactId>jackson-datatype-jsr310</artifactId> | |||||
<version>2.9.2</version> | |||||
</dependency> | |||||
</dependencies> | </dependencies> | ||||
</project> | </project> |
@@ -0,0 +1,156 @@ | |||||
package com.hp.user.generactor; | |||||
import com.baomidou.mybatisplus.annotation.DbType; | |||||
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; | |||||
import com.baomidou.mybatisplus.core.toolkit.StringPool; | |||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils; | |||||
import com.baomidou.mybatisplus.generator.AutoGenerator; | |||||
import com.baomidou.mybatisplus.generator.InjectionConfig; | |||||
import com.baomidou.mybatisplus.generator.config.*; | |||||
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert; | |||||
import com.baomidou.mybatisplus.generator.config.po.TableInfo; | |||||
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; | |||||
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; | |||||
import java.util.*; | |||||
public class CodeGeneractor { | |||||
/** | |||||
* 读取控制台内容 | |||||
*/ | |||||
public static String scanner(String tip) { | |||||
Scanner scanner = new Scanner(System.in); | |||||
StringBuilder help = new StringBuilder(); | |||||
help.append("请输入" + tip + ":"); | |||||
System.out.println(help.toString()); | |||||
if (scanner.hasNext()) { | |||||
String ipt = scanner.next(); | |||||
if (StringUtils.isNotEmpty(ipt)) { | |||||
return ipt; | |||||
} | |||||
} | |||||
throw new MybatisPlusException("请输入正确的" + tip + "!"); | |||||
} | |||||
public static void main(String[] args) { | |||||
/** | |||||
* 代码生成器 | |||||
*/ | |||||
AutoGenerator mpg = new AutoGenerator(); | |||||
/** | |||||
* 全局配置 | |||||
*/ | |||||
GlobalConfig globalConfig = new GlobalConfig(); | |||||
//生成文件的输出目录 | |||||
String projectPath = System.getProperty("user.dir"); | |||||
globalConfig.setOutputDir(projectPath + "/user-service/src/main/java"); | |||||
//Author设置作者 | |||||
globalConfig.setAuthor("王怡静"); | |||||
//是否覆盖文件 | |||||
globalConfig.setFileOverride(true); | |||||
//生成后打开文件 | |||||
globalConfig.setOpen(false); | |||||
mpg.setGlobalConfig(globalConfig); | |||||
/** | |||||
* 数据源配置 | |||||
*/ | |||||
DataSourceConfig dsc = new DataSourceConfig(); | |||||
// DataSourceConfigBean d = context.getBean(DataSourceConfigBean.class); | |||||
dsc.setUrl("jdbc:mysql://47.104.215.101:3366/user?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC"); | |||||
dsc.setDriverName("com.mysql.cj.jdbc.Driver"); | |||||
dsc.setUsername("dwtdev"); | |||||
dsc.setPassword("dwtdev@2020"); | |||||
mpg.setDataSource(dsc); | |||||
/** | |||||
* 包配置 | |||||
*/ | |||||
PackageConfig pc = new PackageConfig(); | |||||
// pc.setModuleName(scanner("模块名")); | |||||
//父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名 | |||||
pc.setParent("com.hp.user.test"); | |||||
mpg.setPackageInfo(pc); | |||||
/** | |||||
* 自定义配置 | |||||
*/ | |||||
InjectionConfig cfg = new InjectionConfig() { | |||||
@Override | |||||
public void initMap() { | |||||
// to do nothing | |||||
} | |||||
}; | |||||
/** | |||||
* 模板 | |||||
*/ | |||||
//如果模板引擎是 freemarker | |||||
String templatePath = "/templates/mapper.xml.ftl"; | |||||
// 如果模板引擎是 velocity | |||||
// String templatePath = "/templates/mapper.xml.vm"; | |||||
/** | |||||
* 自定义输出配置 | |||||
*/ | |||||
List<FileOutConfig> focList = new ArrayList<>(); | |||||
// 自定义配置会被优先输出 | |||||
focList.add(new FileOutConfig(templatePath) { | |||||
@Override | |||||
public String outputFile(TableInfo tableInfo) { | |||||
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! | |||||
// return projectPath + "/user-service/src/main/resources/mapper/"+ pc.getModuleName() | |||||
// + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; | |||||
return projectPath + "/user-service/src/main/resources/mapper/" | |||||
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; | |||||
} | |||||
}); | |||||
cfg.setFileOutConfigList(focList); | |||||
mpg.setCfg(cfg); | |||||
/** | |||||
* 配置模板 | |||||
*/ | |||||
TemplateConfig templateConfig = new TemplateConfig(); | |||||
// 配置自定义输出模板 | |||||
//指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别 | |||||
// templateConfig.setEntity("templates/entity2.java"); | |||||
// templateConfig.setService(); | |||||
// templateConfig.setController(); | |||||
templateConfig.setXml(null); | |||||
mpg.setTemplate(templateConfig); | |||||
/** | |||||
* 策略配置 | |||||
*/ | |||||
StrategyConfig strategy = new StrategyConfig(); | |||||
//设置命名格式 | |||||
strategy.setNaming(NamingStrategy.underline_to_camel); | |||||
strategy.setColumnNaming(NamingStrategy.underline_to_camel); | |||||
// strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); | |||||
strategy.setInclude("tb_station,r_customer_service_provider_enterprise".split(",")); | |||||
//实体是否为lombok模型(默认 false) | |||||
strategy.setEntityLombokModel(true); | |||||
//生成 @RestController 控制器 | |||||
strategy.setRestControllerStyle(true); | |||||
//设置自定义继承的Entity类全称,带包名 | |||||
//strategy.setSuperEntityClass("com.jiangfeixiang.mpdemo.BaseEntity"); | |||||
//设置自定义继承的Controller类全称,带包名 | |||||
//strategy.setSuperControllerClass("com.jiangfeixiang.mpdemo.BaseController"); | |||||
//设置自定义基础的Entity类,公共字段 | |||||
// strategy.setSuperEntityColumns("id"); | |||||
//驼峰转连字符 | |||||
strategy.setControllerMappingHyphenStyle(true); | |||||
//表名前缀 | |||||
// strategy.setTablePrefix(pc.getModuleName() + "_"); | |||||
strategy.setTablePrefix("tb_","r_"); | |||||
mpg.setStrategy(strategy); | |||||
mpg.setTemplateEngine(new FreemarkerTemplateEngine()); | |||||
mpg.execute(); | |||||
} | |||||
} |
@@ -0,0 +1,160 @@ | |||||
package com.hp.user.generactor; | |||||
import java.util.Scanner; | |||||
import org.springframework.boot.SpringApplication; | |||||
import org.springframework.boot.autoconfigure.SpringBootApplication; | |||||
import org.springframework.context.ConfigurableApplicationContext; | |||||
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource; | |||||
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; | |||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils; | |||||
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.TemplateConfig; | |||||
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; | |||||
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; | |||||
//@SpringBootApplication | |||||
//@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) | |||||
//@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) | |||||
//@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)加了这个会导致mapper注入不进去 | |||||
//@NacosPropertySource(dataId = "userdatasource", autoRefreshed = true)//为啥nacos中的配置只能是Properties | |||||
public class GeneratorCodeTest { | |||||
public static String scanner(String tip) { | |||||
Scanner scanner = new Scanner(System.in); | |||||
StringBuilder help = new StringBuilder(); | |||||
help.append("请输入" + tip + ":"); | |||||
System.out.println(help.toString()); | |||||
if (scanner.hasNext()) { | |||||
String ipt = scanner.next(); | |||||
if (StringUtils.isNotEmpty(ipt)) { | |||||
return ipt; | |||||
} | |||||
} | |||||
throw new MybatisPlusException("请输入正确的" + tip + "!"); | |||||
} | |||||
public static void main(String[] args) { | |||||
// ConfigurableApplicationContext context = SpringApplication.run( | |||||
// GeneratorCodeTest.class, args); | |||||
// 代码生成器 | |||||
AutoGenerator mpg = new AutoGenerator(); | |||||
// 全局配置 | |||||
GlobalConfig gc = new GlobalConfig(); | |||||
String projectPath = System.getProperty("user.dir"); | |||||
gc.setOutputDir(projectPath + "/user-service/src/main/java"); | |||||
gc.setAuthor("王怡静"); | |||||
gc.setOpen(false); | |||||
gc.setServiceName("%sService"); | |||||
gc.setServiceImplName("%sServiceImpl"); | |||||
//实体属性 Swagger2 注解 | |||||
gc.setSwagger2(false); | |||||
mpg.setGlobalConfig(gc); | |||||
// 数据源配置 | |||||
DataSourceConfig dsc = new DataSourceConfig(); | |||||
// DataSourceConfigBean d = context.getBean(DataSourceConfigBean.class); | |||||
dsc.setUrl("jdbc:mysql://47.104.215.101:3366/user?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC"); | |||||
dsc.setDriverName("com.mysql.cj.jdbc.Driver"); | |||||
dsc.setUsername("dwtdev"); | |||||
dsc.setPassword("dwtdev@2020"); | |||||
mpg.setDataSource(dsc); | |||||
// 包配置 | |||||
PackageConfig pc = new PackageConfig(); | |||||
// pc.setModuleName(scanner("模块名")); | |||||
// pc.setParent("com.hp.user.test"); | |||||
// pc.setEntity("model.auto"); | |||||
// pc.setMapper("mapper.auto"); | |||||
// pc.setService("service"); | |||||
// pc.setServiceImpl("service.impl"); | |||||
// pc.setController(null); | |||||
mpg.setPackageInfo(pc); | |||||
// 自定义配置 | |||||
// InjectionConfig cfg = new InjectionConfig() { | |||||
// @Override | |||||
// public void initMap() { | |||||
// // to do nothing | |||||
// } | |||||
// }; | |||||
// 如果模板引擎是 freemarker | |||||
// String templatePath = "/templates/mapper.xml.ftl"; | |||||
// 如果模板引擎是 velocity | |||||
// String templatePath = "/templates/mapper.xml.vm"; | |||||
// 自定义输出配置 | |||||
// List<FileOutConfig> focList = new ArrayList<>(); | |||||
// 自定义配置会被优先输出 | |||||
// focList.add(new FileOutConfig(templatePath) { | |||||
// @Override | |||||
// public String outputFile(TableInfo tableInfo) { | |||||
// // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! | |||||
// return projectPath + "/src/main/resources/mapper/" + pc.getModuleName() | |||||
// + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; | |||||
// } | |||||
// }); | |||||
/* | |||||
cfg.setFileCreate(new IFileCreate() { | |||||
@Override | |||||
public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) { | |||||
// 判断自定义文件夹是否需要创建 | |||||
checkDir("调用默认方法创建的目录"); | |||||
return false; | |||||
} | |||||
}); | |||||
*/ | |||||
// cfg.setFileOutConfigList(focList); | |||||
// mpg.setCfg(cfg); | |||||
// 配置模板 | |||||
TemplateConfig templateConfig = new TemplateConfig(); | |||||
//控制 不生成 controller 空字符串就行 | |||||
templateConfig.setController(""); | |||||
templateConfig.setMapper(""); | |||||
templateConfig.setService(""); | |||||
templateConfig.setServiceImpl(""); | |||||
// 配置自定义输出模板 | |||||
//指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别 | |||||
// templateConfig.setEntity("templates/entity2.java"); | |||||
// templateConfig.setService(); | |||||
// templateConfig.setController(); | |||||
templateConfig.setXml(null); | |||||
mpg.setTemplate(templateConfig); | |||||
// 策略配置 | |||||
StrategyConfig strategy = new StrategyConfig(); | |||||
strategy.setNaming(NamingStrategy.underline_to_camel); | |||||
strategy.setColumnNaming(NamingStrategy.underline_to_camel); | |||||
strategy.setSuperEntityClass("com.baomidou.mybatisplus.extension.activerecord.Model"); | |||||
strategy.setEntityLombokModel(true); | |||||
strategy.setRestControllerStyle(false); | |||||
strategy.setEntityLombokModel(true); | |||||
// 公共父类 | |||||
// strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController"); | |||||
// 写于父类中的公共字段 | |||||
// strategy.setSuperEntityColumns("id"); | |||||
// strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));tb_station | |||||
strategy.setInclude("tb_station,r_customer_service_provider_enterprise".split(",")); | |||||
strategy.setTablePrefix("tb_","r_"); | |||||
strategy.setControllerMappingHyphenStyle(true); | |||||
// strategy.setTablePrefix(pc.getModuleName() + "_"); | |||||
mpg.setStrategy(strategy); | |||||
mpg.setTemplateEngine(new FreemarkerTemplateEngine()); | |||||
mpg.execute(); | |||||
} | |||||
} |
@@ -21,9 +21,5 @@ public class UserServiceApplaction { | |||||
public static void main(String[] args) { | public static void main(String[] args) { | ||||
SpringApplication.run(UserServiceApplaction.class, args); | SpringApplication.run(UserServiceApplaction.class, args); | ||||
} | } | ||||
} | } |