
目录
一、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)
















