Mybatis Flex代码生成器

Mybatis Flex代码生成器

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 层生成的接口等等。

### 使用 MyBatis-Flex 进行代码生成 MyBatis-Flex 提供了一套强大的代码生成功能,能够显著减少手动编写重复代码的工作量。通过集成模板引擎和配置文件,可以自动生成实体类、Mapper接口以及对应的XML映射文件。 #### 配置环境 为了使用MyBatis-Flex代码生成功能,需先引入必要的依赖库[^1]: ```xml <dependency> <groupId>net.hasor</groupId> <artifactId>mybatis-flex-codegen</artifactId> <version>${mybatis.flex.version}</version> </dependency> ``` #### 创建代码生成器实例 接下来定义一个`CodeGenerator`对象用于启动整个流程。此过程中需要指定数据源连接信息、目标包路径以及其他必要参数[^2]: ```java DataSource dataSource = ...; // 初始化数据源 String packageName = "com.example"; // 设置基础包名 String outputDir = "./src/main/java/"; // 输出目录 // 构建 CodeGenerator 实例 CodeGenerator codeGenerator = new CodeGenerator(dataSource, packageName); codeGenerator.setOutputDirectory(outputDir); // 添加表到待生成列表中 codeGenerator.addTable("t_user"); codeGenerator.addTable("t_order"); // 执行生成逻辑 codeGenerator.execute(); ``` #### 自定义模板 除了默认提供的模板外,还可以根据项目需求定制化模板文件。这些模板通常位于资源文件夹下的特定位置,并遵循一定的命名约定以便被识别加载。对于更复杂的场景,则可以通过继承`AbstractTemplateEngine`来自定义实现不同的渲染策略. #### 增强功能支持 值得一提的是,在保持原有MyBatis特性的同时,MyBatis-Flex还提供了诸如自动填充字段、乐观锁机制等一系列增强型功能的支持,进一步提升了开发效率与灵活性.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小林学习编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

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

抵扣说明:

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

余额充值