Mybatis Flex代码生成器详解

 更新时间:2025年11月04日 09:30:33   作者:小林学习编程  
MybatisFlex是一个轻量级、高性能的MyBatis增强框架,支持多种数据库操作和灵活的SQL生成,文章还介绍了MybatisFlex代码生成器,可以通过数据库表快速生成Entity、Mapper、Service和Controller等代码

1、什么是Mybatis Flex

MyBatis-Flex是一个优雅的 MyBatis增强框架

MyBatis-Flex 是一个优雅的 MyBatis 增强框架,它非常轻量、同时拥有极高的性能与灵活性。

我们可以轻松的使用 Mybaits-Flex 链接任何数据库,其内置的 QueryWrapper^亮点 帮助我们极大的减少了 SQL 编写的工作的同时,减少出错的可能性。

总而言之,MyBatis-Flex 能够极大地提高我们的开发效率和开发体验,让我们有更多的时间专注于自己的事情。

MyBatis-Flex特征

他的作用和Mybatis Flex一样,都是对传统操作数据库的Mybatis框架进行增加。

他的三大优势:

1、轻量

除了 MyBatis,没有任何第三方依赖轻依赖、没有任何拦截器,其原理是通过 SqlProvider 的方式实现的轻实现。同时,在执行的过程中,没有任何的 Sql 解析(Parse)轻运行。

这带来了几个好处:

  • 1、极高的性能;
  • 2、极易对代码进行跟踪和调试;
  • 3、更高的把控性。

2、灵活

支持 Entity 的增删改查、以及分页查询的同时,MyBatis-Flex 提供了 Db + Row^灵活 工具,可以无需实体类对数据库进行增删改查以及分页查询。 与此同时,MyBatis-Flex 内置的 QueryWrapper^灵活 可以轻易的帮助我们实现 多表查询链接查询子查询 等等常见的 SQL 场景。

3、强大

支持任意关系型数据库,还可以通过方言持续扩展,同时支持 多(复合)主键逻辑删除乐观锁配置数据脱敏数据审计数据填充 等等功能。

2、 mybatis-flex代码生成器

在 mybatis-flex 中,有了一个名称为 mybatis-flex-codegen 的模块,提供了可以通过数据库表,生成代码的功能。

当我们把数据库表设计完成后, 就可以使用其快速生成 Entity、 Mapper、 Service、 Controller 等产物。

除此之外,我们还可以通过扩展生成更多的产物,文档参考 #添加其他产物的生成

2.1、引入依赖

注意使用的是Springboot3的

<dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-spring-boot3-starter</artifactId>
    <version>1.11.0</version>
</dependency>

还需要引入相关依赖

<!-- 代码生成模块 -->
<dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-codegen</artifactId>
    <version>1.11.0</version>
</dependency>
<!-- 数据库连接池 -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
</dependency>

2.2、开发生成器

在根包下新建 generator 包,新建 MyBatisCodeGenerator 类,编写代码生成器。先从官方复制示例代码,然后按需修改即可。

public class MyBatisCodeGenerator {

    // 需要生成的表名
    private static final String[] TABLE_NAMES = {"user"};

    public static void main(String[] args) {
        // 获取数据源信息
        Dict dict = YamlUtil.loadByPath("application.yml");
        Map<String, Object> dataSourceConfig = dict.getByPath("spring.datasource");
        String url = String.valueOf(dataSourceConfig.get("url"));
        String username = String.valueOf(dataSourceConfig.get("username"));
        String password = String.valueOf(dataSourceConfig.get("password"));
        // 配置数据源
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);

        // 创建配置内容
        GlobalConfig globalConfig = createGlobalConfig();

        // 通过 datasource 和 globalConfig 创建代码生成器
        Generator generator = new Generator(dataSource, globalConfig);

        // 生成代码
        generator.generate();
    }

    // 详细配置见:https://mybatis-flex.com/zh/others/codegen.html
    public static GlobalConfig createGlobalConfig() {
        // 创建配置内容
        GlobalConfig globalConfig = new GlobalConfig();

        // 设置根包,建议先生成到一个临时目录下,生成代码后,再移动到项目目录下
        globalConfig.getPackageConfig()
                .setBasePackage("com.yupi.yuaicodemother.genresult");

        // 设置表前缀和只生成哪些表,setGenerateTable 未配置时,生成所有表
        globalConfig.getStrategyConfig()
                .setGenerateTable(TABLE_NAMES)
                // 设置逻辑删除的默认字段名称
                .setLogicDeleteColumn("isDelete");

        // 设置生成 entity 并启用 Lombok
        globalConfig.enableEntity()
                .setWithLombok(true)
                .setJdkVersion(21);

        // 设置生成 mapper
        globalConfig.enableMapper();
        globalConfig.enableMapperXml();

        // 设置生成 service
        globalConfig.enableService();
        globalConfig.enableServiceImpl();

        // 设置生成 controller
        globalConfig.enableController();

        // 设置生成时间和字符串为空,避免多余的代码改动
        globalConfig.getJavadocConfig()
                .setAuthor("<a href=\"https://github.com/liyupi\">程序员鱼皮</a>")
                .setSince("");
        return globalConfig;
    }
}

上述代码中,我们从配置文件中获取数据库连接信息,用来初始化数据源。然后自定义了一些生成配置,包括:

  • 指定逻辑删除字段中
  • 使用的 JDK 版本
  • 生成的代码放到哪个包(建议选择一个独立的包,不要跟老代码混一起)
  • 要生成哪些文件
  • 生成什么代码注释

2.3、执行代码生成器

查看结果

扩展思路-自定义代码生成:

可以参考 官方文档,通过自定义模板的方式更灵活地控制代码生成的内容,比如设置主键自增策略、增加 Controller 层生成的接口等等。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于MybatisPlus插件TenantLineInnerInterceptor实现多租户功能

    基于MybatisPlus插件TenantLineInnerInterceptor实现多租户功能

    这篇文章主要介绍了基于MybatisPlus插件TenantLineInnerInterceptor实现多租户功能,需要的朋友可以参考下
    2021-11-11
  • Java经理与员工的差异实现方法

    Java经理与员工的差异实现方法

    这篇文章主要介绍了Java经理与员工的差异实现方法,需要的朋友可以参考下
    2014-03-03
  • MyBatis中if标签的基本使用

    MyBatis中if标签的基本使用

    本文介绍了MyBatis框架中的if标签的使用方法,包括动态生成SQL语句、处理不同类型的参数和if标签进行条件判断,具有一定的参考价值,感兴趣的可以了解一下
    2024-12-12
  • 利用反射实现Excel和CSV 转换为Java对象功能

    利用反射实现Excel和CSV 转换为Java对象功能

    将Excel或CSV文件转换为Java对象(POJO)以及将Java对象转换为Excel或CSV文件可能是一个复杂的过程,但如果使用正确的工具和技术,这个过程就会变得十分简单,在本文中,我们将了解如何利用一个Java反射的库来实现这个功能,需要的朋友可以参考下
    2023-11-11
  • 关于Java语法糖以及语法糖的原理和用法

    关于Java语法糖以及语法糖的原理和用法

    这篇文章主要介绍了关于Java什么是语法糖以及语法糖的种类,也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用,需要的朋友可以参考下
    2023-05-05
  • 使用Java操作Parquet文件的基本步骤

    使用Java操作Parquet文件的基本步骤

    Parquet 是一个强大的列式存储格式,适用于大数据场景,能够高效地进行数据压缩、查询和存储,在 Java 中使用 Apache Spark 读取和写入 Parquet 文件是一项常见的任务,本文给大家介绍了在 Java 中使用 Spark 来读取和写入 Parquet 文件的基本步骤,需要的朋友可以参考下
    2025-03-03
  • Spring声明式事务@Transactional注解实现元数据驱动的事务管理

    Spring声明式事务@Transactional注解实现元数据驱动的事务管理

    这篇文章主要为大家介绍了Spring声明式事务@Transactional注解实现元数据驱动的事务管理示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • mybatisplus的逻辑删除问题

    mybatisplus的逻辑删除问题

    这篇文章主要介绍了mybatisplus的逻辑删除问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java中汉字转拼音pinyin4j用法实例分析

    Java中汉字转拼音pinyin4j用法实例分析

    这篇文章主要介绍了Java中汉字转拼音pinyin4j用法,结合实例形式较为详细的分析了pinyin4j库的具体使用技巧,需要的朋友可以参考下
    2015-12-12
  • Java基础之文件概述

    Java基础之文件概述

    这篇文章主要介绍了Java基础之文件概述,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有一定的帮助,需要的朋友可以参考下
    2021-05-05

最新评论