mybatis-plus代码生成器

发布时间 2023-08-18 00:46:20作者: yikes_ygr

一、java代码

public class GeneratorUtil {

public static void generatorCode(String projectPath, String url, String name, String password, List<String> tables, String parent, String addTablePrefix) {

    //1、配置数据源
    FastAutoGenerator.create("jdbc:mysql://" + url + "?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai",
            name,
            password)

            //2、全局配置
            .globalConfig(builder -> {
                builder.author("guanrong.yin")                                 // 设置作者名
                        .fileOverride()                                 // 开启覆盖已生成文件,默认值false
                        .enableSwagger()                                // 开启 swagger 模式,默认值false
                        .dateType(DateType.ONLY_DATE)                   //定义生成的实体类中日期类型
                        // 指定输出目录,注意可根据包修改,20211206!!!!
                        .outputDir(projectPath + "/src/main/java")
                        .disableOpenDir();
            })

            //3、包配置
            .packageConfig(builder -> {
                builder.parent(parent)                     // 设置父包名,注意一定要根据包修改

// .moduleName("core") // 父包模块名,默认值:无,注意根据包修改
.entity("entities") // Entity包名
.service("service") // Service包名
.serviceImpl("service.impl") // ServiceImpl包名
.controller("controller") // Controller包名
.mapper("mapper") // Mapper包名
.xml("mapper") // Mapper XML包名
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, projectPath + "/src/main/resources/mapper")); // 路径配置信息,设置mapperXml生成路径
})

            //4、策略配置
            .strategyConfig(builder -> {
                builder.addInclude(tables) // 设置需要生成的数据表名
                        .addTablePrefix(addTablePrefix) // 设置过滤表前缀

                        //4.1、实体类策略配置
                        .entityBuilder()
                        .enableLombok() //开启 Lombok

// .disableSerialVersionUID() //不实现 Serializable 接口,不生产 SerialVersionUID
// .logicDeleteColumnName("deleted") //逻辑删除字段名
.naming(NamingStrategy.underline_to_camel) //数据库表映射到实体的命名策略:下划线转驼峰命
.columnNaming(NamingStrategy.underline_to_camel) //数据库表字段映射到实体的命名策略:下划线转驼峰命
.addTableFills(
new Column("created_time", FieldFill.INSERT),
new Column("updated_time", FieldFill.INSERT_UPDATE)
) //添加表字段填充,"create_time"字段自动填充为插入时间,"modify_time"字段自动填充为插入修改时间
.enableTableFieldAnnotation() // 开启生成实体时生成字段注解

                        //4.2、service 策略配置
                        .serviceBuilder()
                        .formatServiceFileName("%sService") //格式化 service 接口文件名称,%s进行匹配表名
                        .formatServiceImplFileName("%sServiceImpl") //格式化 service 实现类文件名称,%s进行匹配表名

                        //4.3、Mapper策略配置
                        .mapperBuilder()
                        .superClass(BaseMapper.class)   //设置父类
                        .formatMapperFileName("%sMapper")   //格式化 mapper 文件名称
                        .enableMapperAnnotation()       //开启 @Mapper 注解
                        .formatXmlFileName("%sXml") //格式化 Xml 文件名称

                        //4.4、Controller策略配置
                        .controllerBuilder()
                        .formatFileName("%sController") //格式化 Controller 类文件名称,%s进行匹配表名,如 UserController
                        .enableRestStyle(); //开启生成 @RestController 控制器
            })

            //5、模板引擎配置
            .templateEngine(new VelocityTemplateEngine())  // 默认

            //6、执行
            .execute();

}

public static void main(String[] args) {

    // 获取项目路径
    String projectPath = "D:/JetBrainsit-work/Idea-Java/yikes-srb/server-core/null";

    // 数据库地址、名称、密码
    String url = "121.5.71.225:31585/db_workshop";
    String name = "root";
    String password = "test@mysql!";

    // 快速生成数据库的表名称
    ArrayList<String> tables = new ArrayList<>();
    tables.add("i_machine");
    tables.add("i_machine_craft_detail");
    tables.add("i_machine_type");
    tables.add("i_machine_type_craft");
    tables.add("i_material");
    tables.add("i_material_process");

    // 父包名
    String parent = "com.cloud";
    // 设置过滤表前缀
    String addTablePrefix = "i_";


    generatorCode(projectPath, url, name, password, tables, parent, addTablePrefix);
}

}

二、pom.xml文件

com.baomidou mybatis-plus-boot-starter com.baomidou mybatis-plus-generator org.apache.velocity velocity-engine-core