public class PlusCodeGenerator {
public static void main(String[] args) {
String author = scanner("请输入作者名称?");
String pkgName = scanner("请输入包名?");
String tableName = scanner("请输入表名,多个英文逗号分隔?");
String projectPath = System.getProperty("user.dir") + "/water-project-restful-api";
//1、配置数据源
FastAutoGenerator.create("jdbc:mysql://192.168.9.226:3306/water_project_dev?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8", "water_project_dev", "WaterProject@123*")
//2、全局配置
.globalConfig((scanner, builder) ->
builder.author(author)/*.author(scanner.apply("请输入作者名称?"))*/
.outputDir(projectPath +"/src/main/java") //设置输出路径:项目的 java 目录下
.commentDate("yyyy-MM-dd hh:mm:ss") //注释日期
.dateType(DateType.ONLY_DATE) //定义生成的实体类中日期的类型 TIME_PACK=LocalDateTime;ONLY_DATE=Date;
.fileOverride() //覆盖之前的文件
//.enableSwagger() //开启 swagger 模式
.disableOpenDir() //禁止打开输出目录,默认打开
)
//3、包配置
.packageConfig((scanner, builder) -> builder.parent("com.fourfaith.iot.water")
//.moduleName("test") //设置模块包名
.entity("pojo.entity."+ pkgName) //pojo 实体类包名
.service("service."+ pkgName) //Service 包名
.serviceImpl("service."+ pkgName + ".impl") // ***ServiceImpl 包名
.mapper("mapper."+ pkgName) //Mapper 包名
.controller("controller."+ pkgName) //Controller 包名
.other("utils") //自定义文件包名
.pathInfo(Collections.singletonMap(OutputFile.xml, projectPath +"/src/main/resources/mapper/"+pkgName))
)
//4、策略配置
.strategyConfig((scanner, builder) -> builder.addInclude(getTables(tableName /*scanner.apply("请输入表名,多个英文逗号分隔?")*/))
.addTablePrefix("t_", "c_") // 设置过滤表前缀
//4.1、Mapper策略配置
.mapperBuilder()
.superClass(BaseMapper.class) //设置父类
.formatMapperFileName("%sMapper") //格式化 mapper 文件名称
.enableMapperAnnotation() //开启 @Mapper 注解
.formatXmlFileName("%s") //格式化 Xml 文件名称
//4.2、service 策略配置
.serviceBuilder()
.superServiceClass(IService.class)
.superServiceImplClass(ServiceImpl.class)
.formatServiceFileName("%sService") //格式化 service 接口文件名称,%s进行匹配表名,如 UserService
.formatServiceImplFileName("%sServiceImpl") //格式化 service 实现类文件名称,%s进行匹配表名,如 UserServiceImpl
//4.3、实体类策略配置
.entityBuilder()
.enableLombok() //开启 Lombok
.disableSerialVersionUID() //不实现 Serializable 接口,不生产 SerialVersionUID
//.logicDeleteColumnName("deleted") //逻辑删除字段名
.naming(NamingStrategy.underline_to_camel) //数据库表映射到实体的命名策略:下划线转驼峰命
.columnNaming(NamingStrategy.underline_to_camel) //数据库表字段映射到实体的命名策略:下划线转驼峰命
/*.addTableFills(
new Column("create_time", FieldFill.INSERT),
new Column("modify_time", FieldFill.INSERT_UPDATE)
) */ //添加表字段填充,"create_time"字段自动填充为插入时间,"modify_time"字段自动填充为插入修改时间
.enableTableFieldAnnotation() // 开启生成实体时生成字段注解
.formatFileName("%sEntity")
//4.4、Controller策略配置
.controllerBuilder()
.formatFileName("%sController") //格式化 Controller 类文件名称,%s进行匹配表名,如 UserController
.enableRestStyle() //开启生成 @RestController 控制器
.enableHyphenStyle()//开启驼峰转连字符
.build()
)
//5、模板
.templateEngine(new VelocityTemplateEngine())
/*
.templateEngine(new FreemarkerTemplateEngine())
.templateEngine(new BeetlTemplateEngine())
*/
//6、执行
.execute();
}
// 处理 all 情况
protected static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
protected 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.isNotBlank(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}
}
标签:包名,实体类,pkgName,scanner,service,生成器,new,String
From: https://www.cnblogs.com/xy20211005/p/17480954.html