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