无需 XML Mapper,超级 Mybatis 代码即是 SQL 操作!真香?

  • 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值