MyBatis-Plus 逆向工程原理及使用指南

概述

MyBatis-Plus(简称 MP)是 MyBatis 的增强工具,它简化了开发人员对数据库的操作,并提供了代码生成器、分页插件等功能。其中的代码生成器(即逆向工程),能够根据数据库中的表结构自动生成实体类(Entity)、Mapper 接口、Service 层及 Controller 层的基础代码,从而极大地减少了开发初期的手动编码工作量。

逆向工程原理
  1. 数据库元数据读取

    • MyBatis-Plus 使用 JDBC 提供的 DatabaseMetaData API 来获取数据库中表和字段的相关信息。通过建立数据库连接,程序可以访问到数据库的元数据,包括表名、列名、数据类型、主键信息等。
  2. 模板引擎

    • 获取到必要的数据库信息后,MP 使用模板引擎如 FreeMarker 或 Velocity 来拼接出最终的 Java 源代码文件。这些模板文件包含了静态代码片段以及一些动态占位符,后者将在运行时被实际的数据库信息所替换。
  3. 代码生成策略

    • 用户可以通过配置文件或编程方式指定哪些表需要生成代码、是否覆盖已存在的文件、是否包含注释等细节。此外,还可以定制生成的代码样式,如包路径、类名前缀/后缀等。
  4. 自定义模板

    • 开发者可以根据项目的具体要求调整生成代码的格式和内容,通过修改模板来确保生成的代码符合特定的编码规范或框架特性。
  5. 代码生成执行

    • 当所有配置设置完毕并选择了合适的模板之后,MP 就会开始执行代码生成功能,将生成的源代码写入到指定的位置。
如何使用 MyBatis-Plus 逆向工程
  1. 引入依赖
    在项目中添加 MyBatis-Plus Generator 和模板引擎(例如 FreeMarker 或 Velocity)的 Maven 依赖。

    <dependency>
        <groupId>com.baomidougroupId>
        <artifactId>mybatis-plus-generatorartifactId>
        <version>3.0.5version>
    dependency>
    <dependency>
        <groupId>org.freemarkergroupId>
        <artifactId>freemarkerartifactId>
        <version>2.3.23version>
    dependency>
    
  2. 准备模板文件
    创建模板文件夹并在其中放置 FTL(FreeMarker Template Language)模板文件,用于定义生成代码的格式。比如,在 %{user_home}\template\ftl\ 目录下放置 report.ftl 文件。

  3. 编写配置类
    编写一个配置类来设定数据库连接参数、选择要生成代码的表、指定输出目录等。

  4. 编写代码生成逻辑
    在代码中调用 MyBatis-Plus 提供的 API 进行代码生成。以下是一个简单的例子:

    public class CodeGenerator {
        public static void main(String[] args) {
            // 创建代码生成器对象
            AutoGenerator mpg = new AutoGenerator();
    
            // 设置全局配置
            GlobalConfig gc = new GlobalConfig();
            String projectPath = System.getProperty("user.dir");
            gc.setOutputDir(projectPath + "/src/main/java");
            gc.setAuthor("图灵学院电商VIP");
            gc.setOpen(false);
            mpg.setGlobalConfig(gc);
    
            // 设置数据源配置
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setUrl("jdbc:mysql://localhost:3306/genserver?serverTimezone=GMT%2B8&characterEncoding=utf-8&autoReconnect=true");
            dsc.setDriverName("com.mysql.cj.jdbc.Driver");
            dsc.setUsername("root");
            dsc.setPassword("root");
            mpg.setDataSource(dsc);
    
            // 设置包配置
            PackageConfig pc = new PackageConfig();
            pc.setParent("com.tuling");
            mpg.setPackageInfo(pc);
    
            // 配置模板
            TemplateConfig templateConfig = new TemplateConfig();
            templateConfig.setController("/templates/controller.java");
            mpg.setTemplate(templateConfig);
    
            // 策略配置
            StrategyConfig strategy = new StrategyConfig();
            strategy.setNaming(NamingStrategy.underline_to_camel);
            strategy.setColumnNaming(NamingStrategy.underline_to_camel);
            strategy.setEntityLombokModel(true);
            strategy.setRestControllerStyle(true);
            strategy.setInclude("black_info"); // 设置要生成代码的表名
            mpg.setStrategy(strategy);
    
            // 执行代码生成
            mpg.execute();
        }
    }
    
  5. 运行代码生成器
    编译并运行你的代码生成器类,MyBatis-Plus 将按照你设定的规则自动为你生成所需的代码。

结论

MyBatis-Plus 的逆向工程是一个强大的工具,它不仅简化了 CRUD 操作相关代码的编写,还促进了开发流程的标准化。通过利用数据库元数据和模板引擎技术,它可以快速生成符合项目需求的基础代码,让开发者能够更专注于业务逻辑的实现。随着项目的复杂度增加,这样的工具可以帮助团队保持代码的一致性和可维护性。

你可能感兴趣的:(mybatis,oracle,tomcat)