用mybatis-plus-generator快速构建简单代码

以下是使用 MyBatis-Plus Generator 3.5.7 版本的通用代码生成器示例。通过这个例子,你将能够根据数据库表自动生成相应的实体类、Mapper 接口、Mapper XML 文件、Service 和 Controller 等代码。

准备工作

  1. 添加依赖

    确保在你的 Spring Boot 项目的 pom.xml 文件中包含 MyBatis-Plus Generator 的依赖:

    <dependencies>
        <!-- MyBatis-Plus 依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.7</version>
        </dependency>
        <!-- MyBatis-Plus Generator 依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.7</version>
        </dependency>
        <!-- 模板引擎 -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version>
        </dependency>
        <!-- MySQL 连接依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
        </dependency>
    </dependencies>
    
  2. 配置 application.ymlapplication.properties

    配置你的数据库连接信息,例如:

    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/yourdatabase?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
        username: yourusername
        password: yourpassword
        driver-class-name: com.mysql.cj.jdbc.Driver
    

代码生成器示例

下面是一个完整的代码生成器示例,可以在项目中创建一个单独的类文件(例如 CodeGenerator.java),运行该类来生成代码。

package com.example.codegen;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

public class CodeGenerator {

    public static void main(String[] args) {
        // 数据源配置
        DataSourceConfig.Builder dataSourceConfig = new DataSourceConfig
                .Builder("jdbc:mysql://localhost:3306/yourdatabase", "yourusername", "yourpassword")
                .dbQuery(new MySqlQuery())
                .schema("yourdatabase")
                .typeConvert((globalConfig, fieldType) -> {
                    String type = fieldType.toLowerCase();
                    if (type.contains("tinyint")) {
                        return DbColumnType.INTEGER;
                    }
                    return null;
                });

        FastAutoGenerator.create(dataSourceConfig)
                // 全局配置
                .globalConfig(builder -> {
                    builder.author("yourname") // 设置作者名
                            .outputDir(System.getProperty("user.dir") + "/src/main/java") // 指定输出目录
                            .fileOverride() // 覆盖已生成文件
                            .disableOpenDir(); // 禁止打开输出目录
                })
                // 包配置
                .packageConfig(builder -> {
                    builder.parent("com.example") // 设置父包名
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "/src/main/resources/mapper")); // 设置Mapper XML生成路径
                })
                // 策略配置
                .strategyConfig(builder -> {
                    builder.addInclude("your_table_name") // 设置需要生成的表名
                            .addTablePrefix("t_", "c_"); // 设置过滤表前缀
                    // 实体策略配置
                    builder.entityBuilder().enableLombok().enableTableFieldAnnotation();
                    // Mapper 策略配置
                    builder.mapperBuilder().enableBaseColumnList().enableBaseResultMap();
                    // Service 策略配置
                    builder.serviceBuilder();
                    // Controller 策略配置
                    builder.controllerBuilder();
                })
                // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }
}

代码解释

  1. DataSourceConfig:配置数据源的信息,包括数据库 URL、用户名和密码。这里使用 MySQL 数据库作为示例。

  2. FastAutoGenerator.create:创建代码生成器,传入数据源配置。

  3. 全局配置(GlobalConfig)

    • 设置作者名。
    • 指定生成文件的输出目录。这里使用相对路径 ${user.dir},指向项目的根目录。
    • 覆盖已生成文件(fileOverride)。
    • 禁止生成完毕后自动打开输出目录(disableOpenDir)。
  4. 包配置(PackageConfig)

    • 设置父包名。生成的代码将位于该包下(如:com.example)。
    • 设置 Mapper XML 文件的生成路径。
  5. 策略配置(StrategyConfig)

    • 设置需要生成的表名,支持多表生成。
    • 设置过滤表前缀。生成时将移除指定的表前缀。
    • 配置实体类策略:启用 Lombok 注解,启用字段注解。
    • 配置 Mapper 策略:启用基础列名列表和结果集映射。
    • 配置 Service 策略:默认配置。
    • 配置 Controller 策略:默认配置。
  6. 模板引擎

    • 使用 Freemarker 模板引擎生成代码。默认是使用 Velocity 模板引擎。

运行代码生成器

  1. 在 IDE 中运行 CodeGenerator 类。在控制台确认是否有生成成功的信息。
  2. 生成的代码文件将会出现在指定的输出目录中(如:src/main/java/com/example)。

生成文件示例

运行完成后,你将在项目的 src/main/java 目录下看到生成的代码文件:

  • 实体类:位于 com.example.entity 包下。
  • Mapper 接口:位于 com.example.mapper 包下。
  • XML 映射文件:位于 src/main/resources/mapper 目录下。
  • Service 接口和实现:位于 com.example.servicecom.example.service.impl 包下。
  • Controller 类:位于 com.example.controller 包下。

总结

通过上述代码示例,你可以快速生成基于 MyBatis-Plus 的基础代码,并根据自己的需要进行进一步开发。MyBatis-Plus Generator 通过配置化的方式极大地方便了代码的生成工作,提高了开发效率。根据实际项目需求,你可以进一步调整配置,以适应不同项目的需求。

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值