相信不少的伙伴在日常开发中应该都用过MyBatis增强框架吧,目前来说国内用的比较多的无非就是MyBatis-Plus,那么今天我再给大家介绍一款新的MyBatis增强框架,它就是MyBatis-Flex。

那么这个框架到底怎么样呢,跟MyBatis-Plus有什么不一样的呢,下面我们先来看下它的介绍,这是官网的一段介绍。

MyBatis-Flex 是一个优雅的 MyBatis 增强框架,它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库,其内置的 QueryWrapper^亮点 帮助我们极大的减少了 SQL 编写的工作的同时,减少出错的可能性。

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

我们在大概了解了一下Mybaits-Flex的定义之后,大家其实也有一些疑惑,就比如这个框架跟MyBatis-Plus相比如何呢,既然都有了MyBatis-Plus,那么为什么还会继续出来个这么个框架,我们接下来看看Mybaits-Flex官网的这几个框架的对比数据。

这个是官网显示的这几个框架的功能对比,通过这个图不难看出Mybaits-Flex支持的功能更多更丰富,其中我感觉最惊艳的还是自带的多表联查,这个对于我这种工作业务就非常方便。下面我就使用SpringBoot3版本针对 Mybaits-Flex 做一个简单的集成吧。

1.首先Maven依赖

<!-- mybatis-flex -->
<dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-spring-boot-starter</artifactId>
    <version>1.7.5</version>
    <exclusions>
        <exclusion>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- 添加已适配 springboot 3.2 的 mybatis-spring 依赖-->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>3.0.3</version>
</dependency>
<!-- mybatis-flex-codegen -->
<dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-codegen</artifactId>
    <version>1.7.5</version>
</dependency>
<!-- mysql-connector -->
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>
<!-- HikariCP -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
</dependency>

2.配置文件

server:
  port: 8001
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mybatis-flex
    username: root
    password: root
  data:
    redis:
      host: 127.0.0.1
      port: 6379
      database: 0
      password: redis
      lettuce:
        pool:
          max-active: 200
          max-wait: -1ms
          max-idle: 10
          min-idle: 0
mybatis-flex:
  global-config:
    print-banner: true
    logic-delete-column: deleted
    normal-value-of-logic-delete: 0
    deleted-value-of-logic-delete: 1
    version-column: version

3.取消APT

项目跟路径下新建一个配置文件mybatis-flex.config,这个是用来配置一些APT相关的配置信息。因为我不需要APT自动生成,所以我需要配置关闭APT功能,它默认是开启的,配置关闭即可。

processor.enable=false

4.代码生成器

这个功能还是很不错的,不需要太专注于常用的数据库交互的基本方法,全部都交给自动生成器就可以,我们只需要进行一些简单的配置即可。

public class MybatisFlexCodegen {
    public static void main(String[] args) {
        // 配置数据源
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/mybatis-flex?characterEncoding=utf-8");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        // 创建配置内容,两种风格都可以。
        GlobalConfig globalConfig = createGlobalConfigUseStyle();
        // 通过 datasource 和 globalConfig 创建代码生成器
        Generator generator = new Generator(dataSource, globalConfig);
        // 生成代码
        generator.generate();
    }

    public static GlobalConfig createGlobalConfigUseStyle() {
        // 创建配置内容
        GlobalConfig globalConfig = new GlobalConfig();

        // 设置根包
        globalConfig.getPackageConfig()
                .setSourceDir("你自己的代码输出目录")
                .setBasePackage("cn.youhaveme");

        // 设置表前缀和只生成哪些表,setGenerateTable 未配置时,生成所有表
        globalConfig.getStrategyConfig()
                // .setTablePrefix("tb_")
                .setGenerateTable("user", "user_auth")
                .setLogicDeleteColumn("deleted")
                .setVersionColumn("version");

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

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

        // 设置生成Service
        globalConfig.enableService();

        // 设置生成Impl
        globalConfig.enableServiceImpl();

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

        // 设置生成TableDef
        globalConfig.enableTableDef();

        // 设置生成MapperXml
        globalConfig.enableMapperXml();

        // 设置生成JavaDoc
        globalConfig.getJavadocConfig()
                .setAuthor("youhaveme")
                .setSince("1.0.0");


        return globalConfig;
    }

}

这个代码生成器一出,基本上的搭建流程也结束了,这个搭建过程还是比较容易的呢,其实这个框架给我认为最强大的还是对于多表联查的支持与增强功能,然后就是APT的惊艳,虽然我没用,但是不妨碍它的设计之秀,好啦,下期继续。