MybatisPlus-Generator

文章目录

一、前言

本文将详细介绍mybatisplus-generator的相关使用,mybatisplus-generator是 MyBatis Plus 框架中的一个代码生成工具,它能够自动生成与数据库表对应的 Java 实体类、Mapper 接口以及 XML 配置文件。它的出现极大地提高了开发效率,让开发者能够将更多的精力集中在业务逻辑上,而不是繁琐的 CRUD 操作上。

二、MybatisPlus代码生成器

使用mybatisplus-generator可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

1、引入依赖

博客这里使用的是.vm模板引擎,所以需要手动引入velocity的依赖;

xml 复制代码
<!-- velocity -->
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.1</version>
</dependency>

2、编写生成代码

以下是mybatisplus官方提供的可交互是的代码生成的例子:

java 复制代码
public class MyBatisPlusGenerator {
    // 处理 all 情况
    protected static List<String> getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }

    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/mengjie", "root", "123456")
                // 全局配置
                .globalConfig((scanner, builder) -> {
                    builder.author(scanner.apply("请输入作者名称?")).fileOverride();
                    builder.enableSwagger();
                    builder.outputDir("E:\\study\\SpringCloud\\mybatisplus\\src\\main\\java");
                })
                // 包配置
                .packageConfig((scanner, builder) -> {
                    builder.parent(scanner.apply("请输入包名?"));
                })
                // 策略配置
                .strategyConfig((scanner, builder) -> {
                    builder.addInclude(MyBatisPlusGenerator.getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
                            .controllerBuilder().enableRestStyle().enableHyphenStyle().build();
                    builder.serviceBuilder()
                            .formatServiceFileName("%sService")
                            .formatServiceImplFileName("%sServiceImp")
                            .build();
                    //entity的策略配置
                    builder.entityBuilder()
                            .enableLombok()
                            .enableTableFieldAnnotation()
                            .versionColumnName("version")
                            .logicDeleteColumnName("is_delete")
                            .columnNaming(NamingStrategy.underline_to_camel)
                            .idType(IdType.ASSIGN_ID)
                            .formatFileName("%sEntity")
                            .build();
                })
                .execute();
    }
}

3、配置说明

3.1、全局配置(GlobalConfig)

java 复制代码
new GlobalConfig.Builder()
    .fileOverride()
    .outputDir("")//输出目录
    .author("wmj")
    .enableKotlin()
    .enableSwagger()
    .dateType(DateType.TIME_PACK)
    .commentDate("yyyy-MM-dd")
    .build();

3.2、包配置(PackageConfig)

java 复制代码
new PackageConfig.Builder()
    .moduleName("sys")
    .entity("po")
    .service("service")
    .serviceImpl("service.impl")
    .mapper("mapper")
    .xml("mapper.xml")
    .controller("controller")
    .other("other")
    .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D://"))
    .build();

3.3、模板配置(TemplateConfig)

java 复制代码
new TemplateConfig.Builder()
    .disable(TemplateType.ENTITY)
    .entity("/templates/entity.java")
    .service("/templates/service.java")
    .serviceImpl("/templates/serviceImpl.java")
    .mapper("/templates/mapper.java")
    .mapperXml("/templates/mapper.xml")
    .controller("/templates/controller.java")
    .build();

3.4、策略配置(StrategyConfig)

java 复制代码
new StrategyConfig.Builder()
    .enableCapitalMode()
    .enableSkipView()
    .disableSqlFilter()
    .likeTable(new LikeTable("USER"))
    .addInclude("t_simple")
    .addTablePrefix("t_", "c_")
    .addFieldSuffix("_flag")
    .build();

3.4.1、Entity 策略配置

java 复制代码
new StrategyConfig.Builder()
    .entityBuilder()
    .superClass(BaseEntity.class)
    .disableSerialVersionUID()
    .enableChainModel()
    .enableLombok()
    .enableRemoveIsPrefix()
    .enableTableFieldAnnotation()
    .enableActiveRecord()
    .versionColumnName("version")
    //.versionPropertyName("version") 
    .logicDeleteColumnName("deleted")
    //.logicDeletePropertyName("deleteFlag")
    .naming(NamingStrategy.no_change)
    .columnNaming(NamingStrategy.underline_to_camel)
    .addSuperEntityColumns("id", "created_by", "created_time", "updated_by", "updated_time")
    .addIgnoreColumns("age")
    .addTableFills(new Column("create_time", FieldFill.INSERT))
    .addTableFills(new Property("updateTime", FieldFill.INSERT_UPDATE))
    .idType(IdType.AUTO)
    .formatFileName("%sEntity")
    .build();

3.4.2、Controller 策略配置

java 复制代码
new StrategyConfig.Builder()
    .controllerBuilder()
    .superClass(BaseController.class)
    .enableHyphenStyle()
    .enableRestStyle()
    .formatFileName("%sAction")
    .build();

3.4.3、Service 策略配置

java 复制代码
new StrategyConfig.Builder()
    .serviceBuilder()
    .superServiceClass(BaseService.class)
    .superServiceImplClass(BaseServiceImpl.class)
    .formatServiceFileName("%sService")
    .formatServiceImplFileName("%sServiceImp")
    .build();

4、示例演示

生成前的目录结构:

4.1、进行代码生成:

这里我们可以选择指定表生成也可以直接选择所有表生成;

4.2、生成结果

可以看到生成后的项目结构:

三、总结

  • 提高开发效率: MyBatis Plus Generator 可以根据数据库表结构自动生成大部分的代码,从而减少了开发人员手动编写重复性代码的工作量,提高了开发效率。
  • 代码一致性: 自动生成的代码保证了实体类、Mapper 接口和 XML 配置文件之间的一致性,避免了由于手动编写而引入的错误。
  • 易于维护: 由于代码是自动生成的,所以当数据库表结构发生变化时,只需重新运行生成器即可更新代码,减少了手动修改代码的工作。
  • 支持多种模板引擎: MyBatis Plus Generator 支持多种模板引擎,开发者可以根据自己的偏好选择合适的模板引擎来生成代码。
  • 灵活的配置: 生成器提供了丰富的配置选项,可以根据项目需求进行灵活的配置,包括表名、字段名的映射规则、生成的文件路径等。
  • 支持自定义扩展: 除了自动生成基本的代码外,开发者还可以通过编写插件来扩展生成器的功能,满足特定的项目需求。
相关推荐
咘噜biu7 小时前
多租户动态数据源插件dynamic-datasource简介
java·mybatisplus·动态数据源·多租户
阿拉斯攀登2 天前
MyBatis-Plus 全面介绍 & Spring Boot 集成实战
java·spring boot·mybatisplus·mp
LSL666_9 天前
mybatisplus入门案例
数据库·mysql·mybatisplus
fanruitian11 天前
springboot-mybatisplus-demo
spring boot·后端·mybatis·mybatisplus
草原印象16 天前
Spring Boot Spring MVC MyBatis MyBatis Plus框架编写项目实战案例
spring boot·spring·mybatis·springmvc·mybatisplus
tgethe17 天前
MybatisPlus基础部分详解(中篇)
java·spring boot·mybatisplus
tgethe17 天前
MybatisPlus基础部分详解(上篇)
java·spring boot·mybatisplus
tgethe18 天前
MybatisPlus基础部分详解(下篇)
java·spring boot·mybatisplus
Irene199123 天前
JavaScript 生成器 Generator 函数全面总结
generator·function
小葱拌豆腐~2 个月前
ShardingJDBC整合MybatisPlus的动态数据源
mybatisplus·动态数据源·shardingjdbc