
目录
一、Mybatis-Flex是什么?
二、Mybatis-Flex的有什么特点?
三、Mybatis-Flex和同类框架对比
四、Mybatis-Flex支持的数据库类型
五、快速入门
(1)引入依赖
(2)创建数据库
(3)编写实体类和 Mapper
(4)通过 main 方法开始使用 Mybatis-Flex(无 Spring 的场景)
(5)更多示例
一、Mybatis-Flex是什么?
Mybatis-Flex 是一个优雅的 Mybatis 增强框架,它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库,其内置的 QueryWrapper^亮点 帮助我们极大的减少了 SQL 编写的工作的同时,减少出错的可能性。
官网文档:Mybatis-Flex - Mybatis-Flex 官方网站
二、Mybatis-Flex的有什么特点?
1、轻量:除了 MyBatis,没有任何第三方依赖轻依赖、没有任何拦截器,其原理是通过 SqlProvider 的方式实现的轻实现。同时,在执行的过程中,没有任何的 Sql 解析(Parse)轻运行。 这带来了几个好处:1、极高的性能;2、极易对代码进行跟踪和调试; 3、把控性更高。
2、灵活:支持 Entity 的增删改查、以及分页查询的同时,Mybatis-Flex 提供了 Db + Row^灵活 工具,可以无需实体类对数据库进行增删改查以及分页查询。 与此同时,Mybatis-Flex 内置的 QueryWrapper^灵活 可以轻易的帮助我们实现 多表查询、链接查询、子查询 等等常见的 SQL 场景。
3、强大:支持任意关系型数据库,还可以通过方言持续扩展,同时支持 多(复合)主键、逻辑删除、乐观锁配置、数据脱敏、数据审计、 数据填充 等等功能。
三、Mybatis-Flex和同类框架对比
(1)功能对比:Mybatis-Flex 和同类框架「功能」对比 - Mybatis-Flex 官方网站
 (2)性能对比:Mybatis-Flex 和同类框架「性能」对比 - Mybatis-Flex 官方网站
四、Mybatis-Flex支持的数据库类型
| 数据库 | 描述 | 
|---|---|
| mysql | MySql 数据库 | 
| mariadb | MariaDB 数据库 | 
| oracle | Oracle11g 及以下数据库 | 
| oracle12c | Oracle12c 及以上数据库 | 
| db2 | DB2 数据库 | 
| hsql | HSQL 数据库 | 
| sqlite | SQLite 数据库 | 
| postgresql | PostgreSQL 数据库 | 
| sqlserver2005 | SQLServer2005 数据库 | 
| sqlserver | SQLServer 数据库 | 
| dm | 达梦数据库 | 
| xugu | 虚谷数据库 | 
| kingbasees | 人大金仓数据库 | 
| phoenix | Phoenix HBase 数据库 | 
| gauss | Gauss 数据库 | 
| clickhouse | ClickHouse 数据库 | 
| gbase | 南大通用(华库)数据库 | 
| gbase-8s | 南大通用数据库 GBase 8s | 
| oscar | 神通数据库 | 
| sybase | Sybase ASE 数据库 | 
| OceanBase | OceanBase 数据库 | 
| Firebird | Firebird 数据库 | 
| derby | Derby 数据库 | 
| highgo | 瀚高数据库 | 
| cubrid | CUBRID 数据库 | 
| goldilocks | GOLDILOCKS 数据库 | 
| csiidb | CSIIDB 数据库 | 
| hana | SAP_HANA 数据库 | 
| impala | Impala 数据库 | 
| vertica | Vertica 数据库 | 
| xcloud | 行云数据库 | 
| redshift | 亚马逊 redshift 数据库 | 
| openGauss | 华为 openGauss 数据库 | 
| TDengine | TDengine 数据库 | 
| informix | Informix 数据库 | 
| greenplum | Greenplum 数据库 | 
| uxdb | 优炫数据库 | 
五、快速入门
(1)引入依赖
1、只用到了 Mybatis,没用到 Spring 的场景
<dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-core</artifactId>
    <version>1.2.0</version>
</dependency>2、用到了 Spring 的场景
<dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-spring</artifactId>
    <version>1.2.0</version>
</dependency>3、用到了 Spring Boot 的场景
<dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-spring-boot-starter</artifactId>
    <version>1.2.0</version>
</dependency>(2)创建数据库
CREATE TABLE IF NOT EXISTS `tb_account`
(
    `id`        INTEGER PRIMARY KEY auto_increment,
    `user_name` VARCHAR(100),
    `age`       Integer,
    `birthday`  DATETIME
);(3)编写实体类和 Mapper
@Table("tb_account")
public class Account {
    @Id(keyType = KeyType.Auto)
    private Long id;
    private String userName;
    private Integer age;
    private Date birthday;
    
    //getter setter
}使用 @Table("tb_account") 设置实体类与表名的映射关系
使用 @Id(keyType = KeyType.Auto) 标识主键为自增
Mapper 接口继承 BaseMapper 接口:
public interface AccountMapper extends BaseMapper<Account> {
    
}(4)通过 main 方法开始使用 Mybatis-Flex(无 Spring 的场景)
public class HelloWorld {
    public static void main(String[] args) {
        //创建数据源
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/mybatis-flex");
        dataSource.setUsername("username");
        dataSource.setPassword("password");
        //配置数据源
        MybatisFlexBootstrap.getInstance()
                .setDatasource(dataSource)
                .addMapper(AccountMapper.class)
                .start();
        //获取 mapper
        AccountMapper mapper = MybatisFlexBootstrap.getInstance()
                .getMapper(AccountMapper.class);
        
        //示例1:查询 id=1 的数据
        Account account = mapper.selectOneById(1);
        
        
        //示例2:根据 QueryWrapper 查询 id >= 100 的数据列表
        QueryWrapper query = QueryWrapper.create()
                .where(ACCOUNT.ID.ge(100));
        List<Account> accounts = mapper.selectListByQuery(query);
        
        
        //示例3:者使用 Db + Row 查询
        String sql = "select * from tb_account where age > ?";
        List<Row> rows = Db.selectListBySql(sql, 18);
    }
}(5)更多示例
- 示例 1:Mybatis-Flex 原生(非 Spring)
- 示例 2:Mybatis-Flex with Spring
- 示例 3:Mybatis-Flex with Spring boot
- 示例 4:Db + Row


![[开源工具]Win10/11/8/7 获取笔记本电脑连接过的WIFI名称和密码[开箱可用]](https://img-blog.csdnimg.cn/eed99ea22b3c4507961fd8311cee32ae.png)
















