- Fluent Mybatis 介绍
- Fluent Mybatis 特性一览
- Fluent Mybatis 原理
- Fluent Mybatis vs Mybatis vs Mybatis Plus
- 实现需求比较
- 生成代码编码比较
- 三者对比总结
- Fluent Mybatis 实战
- 引入依赖
- 创建表
- 创建数据库表对应的 Entity 类
- 配置数据源
- 测试
- 总结
最近看到一个 ORM 框架 Fluent Mybatis 挺有意思的,整个设计理念非常符合工程师的思维。
我对官方文档的部分内容进行了简单整理,通过这篇文章带你看看这个新晋 ORM 框架。
官方文档:
https://gitee.com/fluent-mybatis/fluent-mybatis/wikis
提前声明一下:对于这类个人维护和开发的框架,如果大家没有充分的了解,一定一定一定不要用在正式的项目上!不然后续遇到问题会很麻烦的!!!我目前对于 Fluent Mybatis 这个框架也仅仅是感兴趣,想要学习一下它的内部设计。
Fluent Mybatis 介绍
何为 Fluent Mybatis? Fluent Mybatis, 是一款 Mybatis 语法增强框架, 综合了 Mybatis Plus, Dynamic SQL, JPA 框架特性和优点, 利用 annotation processor 生成代码。
Fluent Mybatis 有什么亮点? 使用 Fluent Mybatis 可以不用写具体的 XML 文件,通过 Java API 可以构造出比较复杂的业务 SQL 语句,做到代码逻辑合理 SQL 逻辑的合一。不再需要在 Dao 中组装查询或更新操作,在 XML 或 Mapper 中再组装参数。
项目地址:
https://gitee.com/fluent-mybatis/fluent-mybatis
系列文章:
https://juejin.cn/column/7033388011911921678
img
Fluent Mybatis 特性一览
img
Fluent Mybatis 原理
img
Fluent Mybatis vs Mybatis vs Mybatis Plus
对比原生 Mybatis, Mybatis Plus 或者其他框架,FluentMybatis 提供了哪些便利呢?
实现需求比较
我们通过一个比较典型的业务需求来具体实现和对比下,假如有学生成绩表结构如下:
create table `student_score`
(
id bigint auto_increment comment '主键ID' primary key,
student_id bigint not null comment '学号',
gender_man tinyint default 0 not null comment '性别, 0:女; 1:男',
school_term int null comment '学期',
subject varchar(30) null comment '学科',
score int null comment '成绩',
gmt_create datetime not null comment '记录创建时间',
gmt_modified datetime not null comment '记录最后修改时间',
is_deleted tinyint default 0 not null comment '逻辑删除标识'
) engine = InnoDB default charset=utf8;
现在有需求: 统计 2000 年三门学科('英语', '数学', '语文')及格分数按学期,学科统计最低分,最高分和平均分, 且样本数需要大于 1 条,统计结果按学期和学科排序
我们可以写 SQL 语句如下:
select school_term,
subject,
count(score) as count,
min(score) as min_score,
max(score) as max_score,
avg(score) as max_score
from student_score
where school_term >= 2000
and subject in ('英语', '数学', '语文')
and score >= 60
and is_deleted = 0
group by school_term, subject
having count(score) > 1
order by school_term, subject;
复制代码
那上面的需求,分别是用 Fluent Mybatis, 原生 Mybatis 和 Mybat