springboot之mybatis-flex

  一、mybatis-flex也是一个mybatis的增强框架它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库。

  二、和MyBatis-Plus 与 Fluent-Mybatis 对比。

功能或特点MyBatis-FlexMyBatis-PlusFluent-Mybatis
对 entity 的基本增删改查
分页查询
分页查询之总量缓存
分页查询无 SQL 解析设计(更轻量,及更高性能)
多表查询: from 多张表
多表查询: left join、inner join 等等
多表查询: union,union all
单主键配置
多种 id 生成策略
支持多主键、复合主键
字段的 typeHandler 配置
除了 Mybatis,无其他第三方依赖(更轻量)
QueryWrapper 是否支持在微服务项目下进行 RPC 传输 未知
逻辑删除
乐观锁
SQL 审计
数据填充 ✔️ (收费)
数据脱敏 ✔️ (收费)
字段权限 ✔️ (收费)
字段加密 ✔️ (收费)
字典回写 ✔️ (收费)
Db + Row
Entity 监听
多数据源支持 借助其他框架或收费,不支持非Spring项目
多租户

 

  3、使用教程地址:https://mybatis-flex.com/zh/intro/getting-started.html

  4、这里对springboot相关的说明不是太多,这里补充一些

  1)springboot映入Maven

           <dependency>
                <groupId>com.mybatis-flex</groupId>
                <artifactId>mybatis-flex-spring-boot-starter</artifactId>
            </dependency>

  2)引入驱动和线程池

         <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

  3)多数据源配置,参数和druid相关配置一致。

mybatis-flex:
  datasource:
    default:
      type: druid
      driverClassName: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://127.0.0.1:3306/flex?useSSL=false&useUnicode=true&characterEncoding=utf8
      username: root
      password: root
    other:
      type: druid
      driverClassName: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://127.0.0.1:3306/flex2?useSSL=false&useUnicode=true&characterEncoding=utf8
      username: root
      password: root
  mapper-locations: classpath:/mapper/*.xml

  4)多数据源使用

  

  5)数据查询

  a、加入配置mybatis-flex.properties

# 开启table配置
processor.mappersGenerateEnable=true

  b、通过idea工具的build功能可以使用查询相关,类似lombok.默认生成在target/generated-sources下

  

  

  c、查询引用

  

  说明:这里的USER是通过编译后的东西生成的,报错情况下,手动build一下就可以了。

  d、分页查询,默认是内置了方法的

  

  e、mapper.xml的使用和mybatis一样,这里不错说明。

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.xbd.flex.mapper.UserMapper">

    <select id="listUser" resultType="com.xbd.flex.entity.User">
        select * from user;
    </select>

</mapper>

  6)控制台日志配置

@Configuration
public class XbdConfigurationCustomizer implements ConfigurationCustomizer {

    public void customize(FlexConfiguration flexConfiguration) {
        flexConfiguration.setLogImpl(StdOutImpl.class);
    }
}

  7)代码生成,通过表生成java类

public class Codegen {

    public static void main(String[] args) {
        //配置数据源
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/flex?characterEncoding=utf-8");
        dataSource.setUsername("root");
        dataSource.setPassword("root");

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

        //设置只生成哪些表
        globalConfig.addGenerateTable("test");

        //设置 entity 的包名
        globalConfig.setEntityPackage("com.xbd.flex.entity");

        //父类
        globalConfig.setEntitySupperClass(BaseEntity.class);

        //去除接口
        globalConfig.setEntityInterfaces(new Class[0]);

        //设置 entity 是否使用 Lombok
        globalConfig.setEntityWithLombok(true);

        //是否生成 mapper 类,默认为 false
        globalConfig.setMapperGenerateEnable(true);

        //设置 mapper 类的包名
        globalConfig.setMapperPackage("com.xbd.flex.mapper");

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

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

  5、这里说明一下,这个框架默认觉得还有很多地方不是很完善。

  1)*.xml的分页方案,这里是没有的。还是得通过pagehelper等工具进行。(可能是我没有发现)

  2)代码生成工具,在有父类时,没有办法进行字段过滤,查询源码,没有找到相关配置。

  3)baseMapper的查询限制的比较死,类似JPA的方式,但是没有JPA灵活。

  4)官网的说明不够细吧。

  6、测试代码地址:https://gitee.com/lilin409546297/mybatis-flex-demo

posted @ 2023-05-06 15:53  小不点丶  阅读(6023)  评论(0编辑  收藏  举报