首页 > 其他分享 >实体类生成器

实体类生成器

时间:2023-06-14 17:44:10浏览次数:30  
标签:包名 实体类 pkgName scanner service 生成器 new String

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

相关文章

  • 对python生成器的理解
    什么是生成器?yield该函数没有运行而是返回了一个对象生成器是迭代器需要满足迭代器协议yield对函数做了什么和class定义的迭代器进行对比创建生成器要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:L......
  • RDIFramework.NET平台代码生成器V3.2版本全新发布(提供下载-免费使用)
    最新RDIFramework.NET代码生成器全新V3.5版本发布-重大升级 回顾V3.1版本更新内容如下:1、增加对Oracle表创建语句的查看。2、新增对MySql的代码生成支持。3、全面重构对多线程的支持,改变以前会无故退出的现象。本次在V3.1版本的基础上,增加了代码生成器自动升......
  • RDIFramework.NET代码生成器全新V3.5版本发布-重大升级
    发布说明RDIFramework.NET代码生成器V3.5版本全新震撼推出,相比上次版本,本次发布新增与修改的内容如下:1、全新增加了WinForm界面代码的生成,可直接生成常用的主界面(集新增、修改、删除、查询、分页、打印等常用功能)、编辑界面。真正加大了开发效率,相比以前的版本界面部分只是针对Web......
  • (转)我所理解的Entitas——Jenny代码生成器(序章)
    前(fei)言(hua)使用Entitas集成的代码生成器时如果代码有报错需要先把报错处理掉。如果我们是想删除某个Component或者修改Component中数据类型时就很麻烦。使用Jenny代码生成器时则不用理会这些,直接删除某个Component然后重新生成就行。获取JennyAssetStore导入Entitas时会带有J......
  • 前端-CSS生成器
    按钮https://uiverse.io/buttons有好看的button、卡片、输入框等https://markodenic.com/tools/buttons-generator/玻璃态https://hype4.academy/tools/glassmorphism-generator调色板https://mycolor.space/滚动条https://scrollbar.jason-liang.com/......
  • mybatis-plus-generator-ui 可视化代码生成器!
    它提供交互式的WebUI用于生成兼容mybatis-plus框架的相关功能代码,包括Entity,Mapper,Mapper.xml,Service,Controller等。可以自定义模板以及各类输出参数,也可通过SQL查询语句直接生成代码。git地址:https://github.com/davidfantasy/mybatis-plus-generator-ui一、使用示例1......
  • 迭代器与生成器
    迭代器迭代器可以记住元素的位置只会往前不能往后可以用iter()创建迭代器对象用next()打印出来,可以看到第一个next()的值只会打印第一个可以用for循环遍历出来,for循环是一个特殊的迭代器list1=[1,2,3,4]#创建迭代器对象a=iter(list1)print(next(a))print(ne......
  • 微课--Python生成器函数定义与使用(19分钟)
    8.5 生成器函数定义与使用(书稿节选)如果函数中包含yield语句,那么调用这个函数得到的返回值不是单个值,而是一个包含若干值的生成器对象,这样的函数也称生成器函数。代码每次执行到yield语句时,返回一个值,然后暂停执行,当通过内置函数next()、for循环遍历生成器对象元素或其他方式显式......
  • 详解Python生成器函数和生成器对象的原理和用法
    包含yield语句的函数可以用来创建生成器对象,这样的函数也称生成器函数。yield语句与return语句的作用相似,都是用来从函数中返回值。与return语句不同的是,return语句一旦执行会立刻结束函数的运行,而每次执行到yield语句并返回一个值之后会暂停后面代码的执行,下次通过生成器对象的__n......
  • 实体类中嵌套Enum类型并想转换成JSON字符串时遇到的问题。
    实体类中嵌套Enum类型并想转换成JSON字符串时遇到的问题。先说明问题的产生,在自己写着玩的时候,新建了一个User类如下:packagecom.ma.xdo;importlombok.*;importjava.io.Serializable;/***@ClassNameUser*@DescriptionTODO*@Author@O_o*@Date2023/6/814:......