告别重复劳动!MyBatis-Plus Generator 3分钟生成全套CRUD代码方案

告别重复劳动!MyBatis-Plus Generator 3分钟生成全套CRUD代码方案

【免费下载链接】mybatis-plus An powerful enhanced toolkit of MyBatis for simplify development 【免费下载链接】mybatis-plus 项目地址: https://gitcode.com/gh_mirrors/my/mybatis-plus

你还在手写Entity、Mapper、Service重复代码吗?还在为字段变更频繁修改XML配置吗?本文将带你掌握MyBatis-Plus Generator(代码生成器)的实战技巧,通过简单配置即可一键生成符合阿里巴巴开发规范的全套代码,让你从此专注业务逻辑开发。

为什么选择MyBatis-Plus Generator

MyBatis-Plus Generator是MyBatis-Plus生态中的核心组件,作为一款超强自动代码生成器,它能够根据数据库表结构自动生成Entity实体类、Mapper接口、Service服务层、Controller控制层以及XML映射文件。相比传统开发方式,它能将代码生成时间从几小时缩短到几分钟,同时保证代码风格的一致性。

MyBatis-Plus生态

核心优势包括:

  • 无侵入:完全基于MyBatis增强,不改变原有生态
  • 高度定制:支持模板引擎、命名策略、注解生成等个性化配置
  • 多数据库支持:内置MySQL、Oracle、PostgreSQL等20+数据库适配
  • 全链路生成:覆盖从数据访问层到控制层的完整代码链路

快速上手:10行代码实现自动生成

使用Generator只需简单三步:添加依赖、编写配置、执行生成。以下是Spring Boot环境下的快速启动示例:

1. 添加依赖

pom.xml中添加MyBatis-Plus Generator依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>最新版本</version>
</dependency>
<!-- 模板引擎依赖,任选其一 -->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
</dependency>

2. 编写生成配置

创建CodeGenerator.java,配置数据源和生成策略:

public class CodeGenerator {
    public static void main(String[] args) {
        // 1. 全局配置
        GlobalConfig gc = new GlobalConfig.Builder()
            .outputDir(System.getProperty("user.dir") + "/src/main/java")
            .author("开发人员")
            .openDir(false)
            .build();

        // 2. 数据源配置
        DataSourceConfig dsc = new DataSourceConfig.Builder("jdbc:mysql://localhost:3306/test", "root", "password")
            .build();

        // 3. 策略配置
        StrategyConfig sc = new StrategyConfig.Builder()
            .addInclude("user", "order") // 生成的表名
            .entityBuilder().enableLombok() // 启用Lombok注解
            .controllerBuilder().enableRestStyle() // 生成REST风格控制器
            .build();

        // 4. 执行生成
        new AutoGenerator(dsc)
            .global(gc)
            .strategy(sc)
            .execute();
    }
}

核心配置类位于mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/AutoGenerator.java,通过链式调用完成配置组装。

3. 执行生成

运行main方法后,Generator会在指定目录下生成如下文件结构:

src/main/java
└── com/example/demo
    ├── entity      // 实体类
    ├── mapper      // Mapper接口
    ├── service     // Service接口
    ├── service/impl // Service实现类
    └── controller  // 控制器

高级定制:打造符合团队规范的代码

Generator提供了丰富的定制化配置,满足不同团队的编码规范需求。以下是几个实用的高级配置场景:

命名策略配置

通过NamingStrategy自定义表名到类名、字段名到属性名的转换规则:

strategyBuilder()
    .naming(NamingStrategy.underline_to_camel) // 下划线转驼峰
    .columnNaming(NamingStrategy.underline_to_camel)
    .addTablePrefix("t_", "sys_") // 去除表前缀

相关实现见NamingStrategy.java,内置了多种常见命名转换规则。

模板引擎切换

Generator支持Velocity、Freemarker、Beetl等多种模板引擎,默认使用Velocity。切换为Freemarker示例:

new AutoGenerator(dsc)
    .templateEngine(new FreemarkerTemplateEngine())
    // 其他配置...
    .execute();

模板引擎实现位于mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/engine/目录,可通过实现AbstractTemplateEngine接口自定义模板加载逻辑。

自定义注解生成

通过TableFieldAnnotationHandler自定义字段注解生成规则,例如添加Swagger注解:

entityBuilder()
    .addTableFills(new Column("create_time", FieldFill.INSERT)) // 自动填充配置
    .tableFieldAnnotationHandler(new ITableFieldAnnotationHandler() {
        @Override
        public void process(AnnotationAttributes attributes, TableField field) {
            attributes.add("ApiModelProperty", field.getComment());
        }
    })

默认实现见DefaultTableFieldAnnotationHandler.java,可通过实现接口扩展更多注解类型。

实战技巧:提升开发效率的最佳实践

1. 数据库字段自动填充

通过IFill接口配置创建时间、更新时间等公共字段的自动填充:

strategyBuilder()
    .entityBuilder()
    .addTableFills(
        new DefaultFill("create_time", FieldFill.INSERT, LocalDateTime.class),
        new DefaultFill("update_time", FieldFill.INSERT_UPDATE, LocalDateTime.class)
    )

2. 条件构造器生成

启用BaseMapper接口的条件构造器功能,无需手写SQL:

mapperBuilder()
    .enableBaseResultMap() // 生成基本结果映射
    .enableBaseColumnList() // 生成基本列列表

生成的Mapper接口会继承BaseMapper,获得CRUD操作能力:

public interface UserMapper extends BaseMapper<User> {
    // 无需编写基本CRUD方法
}

3. 自定义模板路径

通过TemplateConfig指定自定义模板文件路径:

new TemplateConfig.Builder()
    .entity("/templates/entity.java")
    .mapper("/templates/mapper.java")
    .build()

常见问题解决

1. 中文乱码问题

在全局配置中指定编码格式:

globalBuilder()
    .fileOverride()
    .outputDir(outputDir)
    .commentDate("yyyy-MM-dd")
    .charset("UTF-8")

2. 字段类型映射错误

自定义类型转换器,修正数据库类型到Java类型的映射:

dataSourceConfigBuilder()
    .typeConvertHandler((metaInfo, dbColumnType) -> {
        if ("datetime".equals(metaInfo.getTypeName())) {
            return DbColumnType.LOCAL_DATE_TIME;
        }
        return dbColumnType;
    })

类型转换核心逻辑位于TypeRegistry.java

3. 多模块项目配置

通过PackageConfig指定不同模块的包路径:

packageConfigBuilder()
    .parent("com.example.demo")
    .moduleName("user")
    .entity("entity")
    .mapper("mapper")

总结与展望

MyBatis-Plus Generator作为一款成熟的代码生成工具,已广泛应用于各类Java项目中。它不仅减少了重复劳动,更重要的是通过标准化代码生成,提升了团队协作效率。随着MyBatis-Plus生态的不断完善,Generator将支持更多数据库类型和代码风格。

MyBatis-Plus发展历程

官方文档:README-zh.md
源码地址:mybatis-plus-generator/

掌握Generator的使用,将为你节省大量机械劳动时间,让你更专注于业务逻辑的实现。现在就尝试将它集成到你的项目中,体验自动化代码生成的魅力吧!

提示:定期关注项目更新,获取最新特性和bug修复。项目地址:https://gitcode.com/gh_mirrors/my/mybatis-plus

【免费下载链接】mybatis-plus An powerful enhanced toolkit of MyBatis for simplify development 【免费下载链接】mybatis-plus 项目地址: https://gitcode.com/gh_mirrors/my/mybatis-plus

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值