开发者

Mybatis Flex代码生成器详解

开发者 https://www.devze.com 2025-11-05 11:11 出处:网络 作者: 小林学习编程
目录1、什么是MyBATis FlexMyBatis-Flex是一个优雅的 MyBatis增强框架MyBatis-Flex特征1、轻量2、灵活3、强大2、 mybatis-flex代码生成器2.1、引入依赖2.2、开发生成器2.3、执行代码生成器总结1、什么是Mybatis Flex
目录
  • 1、什么是MyBATis Flex
    • MyBatis-Flex是一个优雅的 MyBatis增强框架
    • MyBatis-Flex特征
      • 1、轻量
      • 2、灵活
      • 3、强大
  • 2、 mybatis-flex代码生成器
    • 2.1、引入依赖
      • 2.2、开发生成器
        • 2.3、执行代码生成器
        • 总结

          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、强大

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

          Mybatis Flex代码生成器详解

          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>
          <!-- 数据库连接池 -->http://www.devze.com;
          <dependency>
              <groupId>com.zaxxer</groupId>
              <artifactId>HikariCP</artifactId>
          </depenbdKBNxIhdency>
          
          

          2.2、开发生成器

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

          public class MyBatisCodeGenerator {
          
              // 需要生成的表名
              private static final String[] TABLE_NAMES = {"user"};
          
              public static void main(String[] args) {
                  // 获取数据源信息
                  Dic编程客栈t 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、执行代码生成器

          查看结果

          Mybatis Flex代码生成器详解

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

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

          总结

          以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

          0

          精彩评论

          暂无评论...
          验证码 换一张
          取 消

          关注公众号